- DispatherServlet : 모든 요청을 받아서(진입점)HandlerMapper에게 요청을 보내 요청을 처리할 수 있는 Controller명과 method명을 얻는일( web.xml에 설정 )
- HandlerMapper : 요청 받은 x.do를 처리할 수 있는 Controller를 검색하는 일.
- Controller : web의 요청을 method로 처리하는 일.
- ViewResolver : Controller에서 반환되는 JSP명을 받아서 prefix와 suffix를 붙여서 JSP가 존재하는지 추적하는 일.
- 파일 작성 위치

- Spring MVC구조 / 동작

Controller 작성법
-
클래스위에 @Controller annotation을 선언한다.
@Controller
public class TestController{
-
method를 사용하여 web의 요청 하나를 처리한다.
-method위에 @RequestMapping, @GetMapping, @PostMapping annotation을 선언.
@RequestMapping( value="/요청URI", method=요청방식 )
public String method명( 매개변수,,, ){
return "응답할 JSP명";
}
}
- POJO( Plain Old Java Object )지원
특정 외부 기술을 포함하지 않고, 순수하게 자바에서 제공하는 데이터 형(기능)만으로 제작되는 클래스.
별도의 Container가 존재하지 않아도, 실행 및 데스트를 손쉽게 할 수 있다.(실행 및 테스트의 용이성 향상)
요청처리(Controller)
- Controller method는 web요청하나를 처리한다.
@RequestMapping("/요청URI")
@RequestMapping(value="/요청URI", method=RequestMethod.GET)
@GetMapping("/요청URI") -> spring4.3부터 추가
Post방식 : <form method="post">
@RequestMapping(value="/요청URI", method=RequestMethod.POST)
@GetMapping("/요청URI") -> spring4.3부터 추가
- GET방식과 POST방식 모두 요청
@RequestMapping(value="/요청URI", method={RequestMethod.GET, RequestMethod.POST})
- 응답 JSP
Controller의 method에서 반환되는 문자열과 ViewResolver의 prefix, suffix가 결합되어 JSP가 찾아진다.
예) "test"가 반환되면 => WEB-INF/views/test.jsp를 찾는다.
-요청된 URL과는 관계가 없다.
-views폴더의 하위폴더를 생성하고 JSP를 생성하면 Controller method에서는 "하위폴더명/jsp명" 으로 반환해야한다.
- web parameter 받기
HttpServletRequest, 단일형(String, int,,,), VO 사용하여 입력 값을 받을 수 있다.
- 단일형으로 web parameter 받기
String이나 기본형으로 받을 수 있다.
주의 : HTML Form Control의 name속성과 method의 patameter명이 반드시 같아야한다.
Filter를 사용한 한글 처리
한글처리시 사용
CharacterEncodingFilter
사용법) => DD( Deployment Descriptor ) : web.xml 에 작성.
1.필터등록
<filter>
<filter-name>객체명</filter-name>
<filter-class>org.springframe.web.fileter.CharaterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
</filter>
2.필터가 동작하는 URL설정
<filter-mapping>
<filter-name>객체명</filter-name>
<url-pattern>/*</url-pattern >
</filter-mapping>