Spring Reference 13장

A collection of 20 posts

Spring MVC

Vlidator - ValidationUtils 사용하기

Spring에서 Validator를 구현하는 방법은 두 가지가 있습니다.1. Programmatic2. Declarative 그 중에서 첫 번째 Programmatic 방법을 사용하여 구현할 때 ValidationUtils를 사용하면 매우 간단하게 구현할 수 있습니다.인터페이스 중에 인자가 네개인 녀석을 사용하여 defaultMessage를 주면 프로퍼티 파일을 만들지 않아도 메시지를 출력할 수 있습니다. 1. Validator

Intercepting requests

Intercepting requests 예제

어떤 서비스를 로그인 한 유저에게만 제공하고 싶다면… request를 처리하는 메소드 내에서 if (request.getSession.getAttribute(“user”) != null)    throw LoginRequiredException(); 이런식으로 예외를 발생시키고 이 예외가 발생할 때마다 로그인 페이지로 이동 시키게 할 수 있습니다. 하지만 저런 코드가 여러 부분에서 필요하게

File Upload

13.8. Spring's multipart (fileupload) support

13.8.1. Introduction MultipartResolver 인터페이스를 사용하여 파일 업로드를 구현할 수 있습니다. 내부 구현체는 Commons FileUpload 와 COS FileUpload 를 사용합니다. 기본적으로 Spring은 Multipart 를 지원하진 않지만 Multipart를 포함하는 요청이 들어오면 Context에 설정해둔 MutipartResoolver를 사용하여 적절하게 처리할 수 있습니다. 13.8.2. Using the

Spring Reference 13장

13.7. Using themes

13.7.1. Introduction 테마를 적용하기 위해서는 전역적으로 사용할 스타일 시트(CSS)와 그림 파일등의 자원을 정의하는 것이 필요합니다.13.7.2. Defining themes ThemeSource 를 사용하면 되는데 XmlWebApplicationContext 가 ThemeSource 를 구현하고 있으며 내부 구현체로는 ResourceBundleThemeSource 를 기본으로 사용하고 있습니다. ResourceBundleThemeSource는 classpath에 들어있는

locale

13.6. Using locales

Request가 들어오면 Dispatcher는 Locale resolver를 찾게 되고 만약에 있으면 Locale을 설정할 때 사용합니다. RequestContext.getLocale() 메소드를 사용해서 Locale resolver에 의해 설정 된 Locale을 가져올 수 있습니다. 13.6.1. AcceptHeaderLocaleResolver 사용자의 브라우져에서 보내진 request의 헤더에 accept-language 부분에서 Locale을 읽어들입니다. 사용자의 OS locale을 나타냅니다.13.

Chaining Resolvers

13.5.2. Chaining ViewResolvers

다수의 ViewResolver들을 등록해 둘 수 있습니다. 그 때 특정 view 이름을 해석할 View Resolver들을 순서대로 나열하는 것을 Chaining ViewResolver라고 하는 것 같습니다. ViewResolver들의 순서는 Ordered 인터페이스를 사용하여 설정할 수 있습니다. 레퍼런스의 예를 보겠습니다. <bean id=”jspViewResolver” class=”org.springframework.web.

Interceptor

13.4.3. Intercepting requests - the HandlerInterceptor interface

HandlerMapping 안에 interceptor를 만들어서 HandlerMapping에 들어오는 요청들 중에 일부를 처리하는 Handler 하테 요청을 세 가지 시점(넘기기 전과 후, 완료 된 후)에 특정 작업을 추가할 수 있습니다. 레퍼런스에 나와있는 예제는 특정 시간 사이에 들어오는 요청이 아니면 모두 특정 페이지로 요청을 넘겨 버리게 됩니다.

DispatcherServlet

13.4. Handler mappings

DispatcherServlet 과의 관계를 나타내면 다음과 위와 같이 여러 개의 handlerMapping 객체를 List 형태로 가지고 있습니다. Dispatcher Servlet은 위 그림에 표현하지 않은 다른 객체들도 여럿 가지고 있습니다. 저 중에 딱 Dispatcher Servelt과 HandlerMapping 하나와의 관계를 보겠습니다.요청을 처리할 커맨드 객체를 찾아서 HandlerExecutionChain 객체에 감싸서 넘겨

Command Controllers

13.3.4. Command controllers

AbstractCommandController :: 특정 객체로 request의 파라미터를 바인딩 할 수 있습니다. 폼 기능은 제공하지 않지만 validation을 할 수 있으며 바인딩 객체를 사용하여 원하는 일을 할 수 있습니다. AbstractFormController :: submit 기능을 제공하기 위한 추상 클레스 입니다. 사용자의 화면의 폼에 입력할 값을 채우면 각각의 필드로 바인딩하고 validation 할

ParameterizableViewController

13.3.2. Other simple controllers

ParameterizableViewController 를 사용하면 AbstractController 와 기능은 같지만 veiw 이름을 Configuration 파일에서 설정할 수 있습니다.위의 인터페이스를 보면 viewName이라는 멤버 변수가 있고 setter injection 사용하여 설정 파일로 부터 view 이름을 설정 할 수 있다는 것을 알 수 있습니다.AbstractController와의 관계는 다음과 같습니다. 실제 구현한 코드도

AbstractController

13.3.1. AbstractController and WebContentGenerator

다양한 컨트롤러들의 가장 기반이 되는 구현체인 AbstractController에서 설정할 수 있는 속성들은 다음과 같습니다. Feature Explanation supportedMethods 어떤 형식의 요청을 받아 들일지 설정합니다. 보통은 GET 이나 POST 둘 중 하나며 원하는 메서드 이름으로 바꿀 수 도 있습니다. 지원 하지 않는 요청의 경우 ServletException이 발생합니다. requiresSession

Controller

13.3. Controllers

컨트롤러는 MVC중 C에 해당하며 사용자의 입력을 받은 뒤 뷰에 보여주기 적당한 모델로 바꿔준다. Spring은 다양한 컨트롤러들을 제공하는데 크게 폼 컨트롤러, 커맨드 기반 컨트롤러, 마법사 스타일의 컨트롤러로 나뉩니다. Spring 컨트롤러의 가장 상위에 위치한 Controller 인터페이스는 다음과 같습니다. public interface Controller {     /**    

Spring Reference 13장

13.1. Introduction

Spring MVC 의 특징 다른 web MVC 프레임워크와 마찬가지로 모든 요청을 DispatcherServlet 을 사용하여 요청을 처리할 핸들러에게 dispatch 합니다. 요청을 처리할 핸들러(Controller)로는 가장 심플한 Controller 인터페이스 부터 여러 경우에 사용할 수 있는 구현체들을 제공합니다. 어떤 객체라도 폼에 입력되는 값을 받아들이는 객체(폼

Spring Reference 13장

13. Web MVC framework

13.1. Introduction Spring MVC는 DispatcherServlet  를 중심으로 만들어졌습니다.모든 객체가 Command 객체로 사용될 수 있습니다.View Resolution이 정말 유연하다. 13.2. The DispatcherServlet Spring MVC 프레임워크도 다른 request 중심의 웹 MVC 프레임워크와 마찬가지로 중앙 서브릿에서 요청(request)을 디스패칭하여 웹 애플리케이션의 다른

You've successfully subscribed to Whiteship!