반응형
스프링 MVC를 이용한 웹 요청 처리
구성요소
DispatcherServlet : 클라이언트의 요청을 전달받음. 컨트롤러에게 클라이언트의 요청을 전달하고 컨트롤러가 리턴한 결과 값을 view에 전달하여 알맞은 응답을 생성하도록 한다.
HandlerMapping : 클라이언트의 요청 URL을 어떤 컨트롤러가 처리할 지를 결정
Controller : 클라이언트의 요청을 처리한 뒤, 그 결과를 DispatcherServlet에 알려줌.
ModelAndView : 컨트롤러가 처리한 결과 정보 및 뷰 선택에 필요한 정보를 담는다.
ViewResolver : 컨트롤러의 처리 결과를 생성할 뷰를 결정
View : 컨트롤러의 처리 결과 화면을 생성
캐릭터 인코딩 처리를 위한 필터 설정
요청 파라미터의 캐릭터 인코딩이 ISO-8859-1이 아닌경우, request.setCharacterEncoding() 메소드를 사용해서 요청 파라미터의 캐릭터 인코딩을 설정해 줘야 하는데 모든 Controller에서 이 코드를 실행할 수 있지만 그것보다는 서블릿 필터를 이용해서 원하는 요청에 코드를 적용하는것이 더 편리.
web.xml에 추가
웹 요청과 컨트롤러 매핑 : HandlerMapping의 구현 클래스
- SimpleUrlHandlerMapping
- BeanNameUrlHandlerMapping
- ControllerClassNameHandlerMapping
- DefaultAnnotationHandlerMapping
컨트롤러 종류
- Controller
- AbstractController
- AbstractCommandController
- SimpleFormController
- AbstractWizardFormController
- ParameterizableViewController
- UrlFilenameViewController
- MultiActionController
Annotatiln을 이용한 Controller의 구현
더 자세히
예외처리
interface Controller의 handleRequest() 메소드는 Exception을 발생할 수 있도록 정의
Controller는 서블릿과 관련된 ServletException뿐만 아니라 NullPointerException과 같은 RuntimeException등 다양한 예외를 발생시킬 수 있다.
보통은 서블릿 엔진이 제공하는 에러 화면이 웹 브라우저에 출력되는데 만약 예외에 따라 알맞은 에러 화면을 출력하고 싶다면 HandlerExceptionResolver를 사용하면 된다.
DispatcherServlet은 HandlerExceptionResolver가 등록되어 있을 경우, 예외 처리를 HandlerExceptionResolver에 맡긴다.
SimpleMappingExceptionResolver 클래스는 HandlerExceptionResolver 인터페이스를 구현하고 있으며, 스프링에서는 현재 SimpleMappingExceptionResolver 클래스만을 제공하고 있다.
구성요소
DispatcherServlet : 클라이언트의 요청을 전달받음. 컨트롤러에게 클라이언트의 요청을 전달하고 컨트롤러가 리턴한 결과 값을 view에 전달하여 알맞은 응답을 생성하도록 한다.
HandlerMapping : 클라이언트의 요청 URL을 어떤 컨트롤러가 처리할 지를 결정
Controller : 클라이언트의 요청을 처리한 뒤, 그 결과를 DispatcherServlet에 알려줌.
ModelAndView : 컨트롤러가 처리한 결과 정보 및 뷰 선택에 필요한 정보를 담는다.
ViewResolver : 컨트롤러의 처리 결과를 생성할 뷰를 결정
View : 컨트롤러의 처리 결과 화면을 생성
캐릭터 인코딩 처리를 위한 필터 설정
요청 파라미터의 캐릭터 인코딩이 ISO-8859-1이 아닌경우, request.setCharacterEncoding() 메소드를 사용해서 요청 파라미터의 캐릭터 인코딩을 설정해 줘야 하는데 모든 Controller에서 이 코드를 실행할 수 있지만 그것보다는 서블릿 필터를 이용해서 원하는 요청에 코드를 적용하는것이 더 편리.
web.xml에 추가
<filter>
<filter-name>encodingFilter</filter-name>
<filter-class>
org.springframework.web.filter.CharacterEncodingFilter
</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
</filter>
<filter-name>encodingFilter</filter-name>
<filter-class>
org.springframework.web.filter.CharacterEncodingFilter
</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>encodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
웹 요청과 컨트롤러 매핑 : HandlerMapping의 구현 클래스
- SimpleUrlHandlerMapping
- BeanNameUrlHandlerMapping
- ControllerClassNameHandlerMapping
- DefaultAnnotationHandlerMapping
컨트롤러 종류
- Controller
- AbstractController
- AbstractCommandController
- SimpleFormController
- AbstractWizardFormController
- ParameterizableViewController
- UrlFilenameViewController
- MultiActionController
Annotatiln을 이용한 Controller의 구현
더 자세히
예외처리
interface Controller의 handleRequest() 메소드는 Exception을 발생할 수 있도록 정의
Controller는 서블릿과 관련된 ServletException뿐만 아니라 NullPointerException과 같은 RuntimeException등 다양한 예외를 발생시킬 수 있다.
보통은 서블릿 엔진이 제공하는 에러 화면이 웹 브라우저에 출력되는데 만약 예외에 따라 알맞은 에러 화면을 출력하고 싶다면 HandlerExceptionResolver를 사용하면 된다.
DispatcherServlet은 HandlerExceptionResolver가 등록되어 있을 경우, 예외 처리를 HandlerExceptionResolver에 맡긴다.
SimpleMappingExceptionResolver 클래스는 HandlerExceptionResolver 인터페이스를 구현하고 있으며, 스프링에서는 현재 SimpleMappingExceptionResolver 클래스만을 제공하고 있다.
반응형
'backend > Spring' 카테고리의 다른 글
[Spring] Lazy Initialization in Spring Boot 2.2 - 번역 (0) | 2019.07.16 |
---|---|
[SpringSecurity] Authentication(인증) 관련 클래스와 처리 (0) | 2016.01.25 |
[Spring] @Autowired의 Before/After (2) | 2009.04.29 |
[Spring] 스프링에서 VelocityTools 환경설정 (2) | 2008.03.20 |
[Spring] Bean과 BeanFactory의 후처리 (8) | 2008.02.12 |
[Spring] 자동 묶기(Autowire) (2) | 2008.02.12 |
[Spring] 세터 주입(Setter Injection)의 대안 (5) | 2008.02.05 |
[Spring] 빈 묶기(Bean wiring) (2) | 2008.02.05 |