1. web.xml 에 DispatcherServlet 의 설정을 잡는다. (이 곳의 name이 name명-servlet.xml 파일이 설정파일이 된다)
2. HandlerMapping 을 이용 URL 과 Bean의 name 속성을 같은 것으로 설정한다.
<bean id="beanName" class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"/>
참고) 만약 이 설정을 넣지 않으면 자동으로 이 HandlerMapping 이 적용된다.
3. Spring 설정 파일에 name에 URL 을 입력하고 class에 Controller 를 지정한 뒤 작성한다.
4. Controller 에서는 ModelAndView 객체를 생성해서 직접 갈 곳을 지정해준다.
SimpleUrlHandlerMapping : 패턴과 컨트롤러 이름을 비교하여, URL 이 패턴에 매칭될 경우 지정 컨트롤러 사용
BeanNameUrlHandlerMapping(default) : URL 과 일치하는 bean 이름의 컨트롤러 사용
ControllerClassNameHandlerMapping : URL 과 매칭되는 클래스 이름을 갖는 빈을 컨트롤러 사용
DefaultAnnotationHandlerMapping : @RequestMapping 어노테이션을 이용 컨트롤러 사용
참고) web.xml에 'url-pattern' 태그를 '/path/*' 같이 설정을 할 경우 전체 경로를 다 사용하고 싶으면 HandlerMapping 설정시
<property name="alwaysUseFullPath" value="true">
를 넣어서 설정을 잡는다.
참고2) 복수개의 HandlerMapping 구현 시 property 로 order 를 넣어서 순서를 정해줄 수도 있다.
Controller, AbstractController : 단순 처리용
AbstractCommandController : 요청 파라미터를 객체에 자동으로 저장해 주고 검증기능 제공한다.
SimpleFormController : 폼을 출력하고 폼에 입력한 데이터를 처리할 때 사용
AbstractWizardFormController : 여러 페이지에 걸쳐 데이터 입력 시 사용
ParameterizableViewController, UrlFilenameViewController :
단순히 뷰로 바로 전달할 때 사용
Validator 인터페이스를 상속받은 클래스로써 command(form)에 들어오는 값들에 대한 검증이 가능하다
주요 메소드 (Validator 인터페이스를 상속받는 클래스에서 구현하는 메소드)
a. ValidationUtils 클래스를 통해서 데이터의 검증을 한다.
혹은 Errors 를 이용해 에러를 저장한다.
b. 이렇게 저장된 오류는 jsp 화면에서 form:errors 태그 를 이용해
오류를 보여주는 것이 가능하다.
c. Errors 에는 전체적인 오류를 저장하기 위한 reject 메소드와 특정
필드에 대한 오류를 저장하기 위한 rejectValue 메소드가 있다.
command 가 쓰이는 Controller xml 설정에 프로퍼티로써 validator 를 적용시켜야 한다.
ex)
<property name="validator" ref="reboardValidator"></property>
XML 셋팅 <context:component-scan base-package="" />
종류
<1> @Controller : 대상 컨트롤러 클래스의 위에 선언
<2> @RequestMapping : 처리할 주소(value) 및 HTTP METHOD 지정
ex) @RequestMapping(value="/index.spring", method=RequestMethod.GET)
<3> @RequestParam("parameterName") : 요청 파라미터를 인자 값으로 선언 시 사용
<4> @ModelAttribute("commandName") : 인자값에 선언 시 요청 파라미터들을 받 는 커맨드 객체로 사용, 메소드 위에 선언 시 뷰에 세팅될 커맨드객체로 사용
<5> @SessionAttributes("commandName") : 클래스 위에 선언하여 세션에 커맨드 객체 저장
<1> 인자타입(parameter type)으로 사용 가능한 타입
a. HttpServletRequest, HttpServletResponse, HttpSession
b. java.util.Locale : 현재 지역정보
c. InputStream, Reader : 요청 컨텐츠에 직접 접근
d. OutputStream, Writer : 응답 컨텐츠로 사용
e. @RequestParam 을 이용한 파라미터 명시
f. Map, ModelMap : 뷰에 전달할 데이터 저장용
g. Command Class : @ModelAttribute 를 사용시 이름이 지정되고, 지정하지 않으면 클래스명이 지정됨(앞글자 소문자)
h. Errors, BindingResult : 커맨드 클래스 바로 뒤에 위치해야 함. 유효성 체크 위해 사용
i. SessionStatus : 폼 처리 완료 시 호출하기 위해 사용 @SessionAttributes 와 같이 사용
a. ModelAndView : 일반적인 컨트롤러 메소드의 리턴 객체
b. Map : 뷰에 전달할 데이터의 집합체, view 이름은 요청 URL로 결정 (RequestToViewNameTranslator)
c. String : view 이름으로 처리
d. void : 직접 응답 처리시
(1) ACID : 트랜젝션에서 추구했던 기본 4요소
(2) 프로그램적인 트랜젝션
(3) 선언적인 트랜젝션