본문 바로가기

분류 전체보기

Spring Framework의 메시지 컨버터를 이용한 FileDownload 구현(2) 일단 메시지 컨버터가 무엇인지에 대한 설명이 필요할것 같다. 일반적으로 Spring MVC를 이용해서 컨트롤러에 값을 주고 받을때는 HTTP 요청 프로퍼티를 분석하여 그에 따라 특정 클래스로 바인딩이 되게끔 하고 컨트롤러에서 특정 객체를 Model Object에 집어 넣어 View를 리턴하는 식으로 주고받게 된다. 그러나 메시지 컨버터는 그런 개념이 아니라 HTTP 요청 메시지 본문과 HTTP 응답 메시지 본문을 통째로 하나의 메시지로 보고 이를 처리한다. Ajax를 통해 XML이나 JSON 문자열을 주고 받을때를 보면 짐작할수 있을 것이다. Spring MVC에서 이러한 작업을 하는데 사용되는 어노테이션이 바로 @RequestBody와 @ResponseBody이다. @RequestBody를 이용하려 파..
Spring Framework의 메시지 컨버터를 이용한 FileDownload 구현(1) 토비의 Spring 3를 보다가 메시지 컨버터의 ByteArrayHttpMessageConverter를 보게 되었다. 설명을 요약하자면 Controller에서 함수가 @ResponseBody 를 사용하여 byte []를 리턴하면 컨텐트 타입을 application/octet-stream으로 설정하여 Response에 byte []를 쏴준다는거다. 어라? 이거 파일 다운로드랑 같네. 이런 생각이 들어서 이 부분을 좀더 보게 되었다. 기존에 내가 갖고 있는 Spring 에서의 파일 다운로드 방법은 AbstractView를 상속받은 파일 다운로드 전용 View를 만들어서 컨트롤러에서 이 View를 생성해서 리턴하는 것이었다. 그럼 이 View에서는 Model에 저장되어 있는 다운로드 할 파일 정보를 이용해서 ..
<mvc:annotation-driven />이 설정해주는 Spring 설정 Tag 흔히 Spring Web MVC 프로젝트를 할때 보면 을 많이 설정하는 편이다. 이거 하나를 설정함으로써 Spring Web MVC를 하기 위해 설정해야 하는 값들이 자동으로 추가 되는데 때로는 이것을 쓰지 않고 일일이 관련된 값을 수동으로 넣어야 하는 경우가 있다. 내가 겪은 대표적인 예로는 org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter(줄여서 AnnotationMethodHandlerAdapter로 한다)에 메시지 컨버터를 추가해야 하는 상황이 있었는데 mvc 태그에서 별도로 추가를 할 수 있는 태그를 제공하질 않았다.(이 부분은 Spring 3.1에서는 별도 태그가 추가가 된 상태다) 그래서 을 지우고 내가..
JBoss Application Server 7에 Oracle Database Connection Pool 생성시 주의점.. Spring을 사용하면서 Oracle Database Connection Pool을 등록할때마다 늘 발생하는 상황이지만.. Oracle 11g에 있는 ojdbc6.jar를 이용해서 Oracle Database Connection Pool을 구성하면 네트워크 관련 에러가 발생한다. 이 부분은 Spring 자체에서 Connection Pool을 만들든, Spring에서 별도의 Connection Pool 라이브러리(예를 들면 c3p0 같은 라이브러리..)를 사용하든, WAS에 Database Connection Pool을 만들어서 이용하든 항상 ojdbc6.jar를 사용하면 발생하게 되는데.. 이것을 ojdbc14.jar(내가 알기론 JDK 1.4 버전에 맞춰진 Oracle용 JDBC 드라이버로 알고 있음)..
Mybatis의 Plug-In을 이용한 SQL문 파라미터 바인딩 로그 출력.. Mybatis에서는 Plug-In을 이용하여 Mybatis가 쿼리를 실행하는 시점에 간섭하여 사용자가 정의한 별도 작업을 진행할수 있다. 예를 들면 쿼리가 실행되기 전 또는 실행된 후에 해당 쿼리가 몇번 실행됐는지 그 실행횟수를 업데이트하는 그런 예를 들수 있다. 이 글에서는 쿼리를 실행하기 전에 로그에 파라미터가 바인딩된 쿼리 로그를 출력하는 Plug-In을 설명하고자 한다. 이 글에서는 Mybatis Plug-In에 대한 구체적인 설명은 하지 않는다. 다만 이 글에서 보여주는 Source의 주석으로 관련 내용을 설명했으니 참고하기 바란다. log4jsql이나 log4jdbc같은 괜찮은 로그툴이 있으나 굳이 이것을 만든것은 로그의 출력형태가 반드시 로그 파일 형태로만 갈수는 없기 때문이다. DB에 기록..
Spring Security에서 설정하는 Access Denied 페이지 지난 2개의 글로 Spring Security에서 권한을 어떤식으로 이용하여 자원(URL) 접근을 제어하는지를 살펴보았다. 이번에는 권한과 관련된 마지막 얘기로 자원을 이용하는데 있어 권한이 충분치 않은 경우 어떻게 진행하는지를 알아보자. 우리가 자주 보는 웹페이지는 아니지만 다음과 같은 유형의 웹페이지를 보는 경우가 있다. 이 웹 페이지는 Tomcat에서 띄우는 것으로 Http Status Code가 403인 경우, 즉 서버가 접근을 허용하지 않는 자원을 접근할려고 시도했을때 보여지는 페이지이다. 이런 성격의 페이지는 모든 Web Server와 WAS 모두 가지고 있다. 모양은 약간약간씩 다르지만 보여지는 내용을 읽어보면 동일함을 알 수가 있다. 이 페이지를 왜 설명하는가? Spring Security..
Spring Security에서 DB를 이용한 자원 접근 권한 설정 및 판단 (2) 지난 글에서는 FilterSecurityInterceptor 클래스를 커스터마이징 하여 DB에서 권한을 조회하여 제어하는 방법에 대해 얘기해보았다. 클래스 소스 위주로 설명했기 때문에 이번에는 이렇게 만든 클래스를 어떤 식으로 설정하여 사용하는지에 대해 언급하도록 하겠다. 위의 설정은 지난 글에서 설명한 클래스를 spring security 설정 xml에 설정한 내용을 보여주고 있다. 몇몇은 이미 이전 글들에서 설명한 적이 있다(, ) 이전 글에서 설명한 적이 있던 것들은 FilterSecurityInterceptor 클래스에 설정하는 인증정보(Authentication Manager)와 판단 주체(Access Manager)이다. 여기 설정에서는 대상 정보(Security MetaDataSource)를..
Spring Security에서 DB를 이용한 자원 접근 권한 설정 및 판단 (1) 지난 글에서는 Spring Security의 FilterSecurityInterceptor 클래스를 통해 어떤 식으로 인증 정보를 이용하여 자원 접근 권한을 제어하는지에 대한 설명을 진행해봤다. 오늘은 이를 응용하여 자원 접근 권한을 XML이 아닌 DB에 설정한 뒤 이를 이용해서 자원 접근 권한을 제어해보도록 하자. 지금부터 설명하는 내용은 전자정부 프레임워크 세미나 중 Spring Security 기능소개 및 활용방법 세미나 동영상을 OLC 사이트에서 보고 이를 적용한 것임을 밝혀둔다(이 부분은 내가 직접 생각해서 만든 부분이 아니다. 혹여 내가 생각한 거라고 오해하는 분이 있으실 듯도 하여 미리 밝혀둔다) 이전 글을 다시 복습하는 차원에서 한번 기억을 떠올려보도록 하자. Spring Security의..