스프링 - 로그인

Posted by 단순대왕 Spring : 2014. 10. 31. 16:00

설정파일

- web.xml

<listener>

           <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>

</listener>

ContextLoaderListener implements javax.servlet.ServletContextListner

ContextLoaderListener 클래스는 ServletContext 인스턴스 생성 시(Tomcat이 어플리케이션을 읽을 때)

호출. DispatcherServlet 클래스가 읽기 전 ContextLoaderListener 클래스가 비즈니스 로직 설정 파일을 읽는다.

 

- shopping-servlet.xml – 스프링 설정

- applicationContext.xml – 비즈니스 로직 계층 클래스 설정

 

@Controller

컨트롤러 클래스에서 Controller 인터페이스를 구현하지 않고 @Controller 어노테이션을 부여해서 컨트롤러

클래스로 생성

 

@RequestMapping

임의의 메소드를 요청을 처리할 메소드로 지정.

HTTP 요청의 파라미터 이름과 메소드 인수 이름이 일치하면 스프링 MVC가 인수 값으로 처리

 

@Controller

public class DetailController {

@RequestMapping

public ModelAndView  detailItem(Integer itemId){

}

}

 

CharacterEncodingFilter 클래스

- 인코딩 필터 폼 입력 항목에 한글 사용

<filter>

           <filter-name>CharacterEncodingFilter</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>

           <init-param>

                     <param-name>forceEncoding</param-name>

                     <param-value>true</param-value>

           </init-param>

</filter>

<filter-mapping>

           <filter-name>CharacterEncodingFilter</filter-name>

           <url-pattern>/*</url-pattern>

</filter-mapping>

 

Validator 클래스

<!-- Validator -->

<bean id="loginValidator" class="utils.LoginValidator" />

 

ResourceBundleMessageSource 클래스

- 메세지 사용을 위한 프로퍼티 파일을 관리하는 클래스

<!-- MessageSource -->

<bean id="messageSource" class="org.springframework.context.support.ResourceBundleMessageSource">

           <property name="basenames">

                     <list>

                                <value>messages</value>          // .properties 확장자를 제외한 파일 이름

                     </list>

           </property>

</bean>

 

[LoginController.java]

클래스에 @Controller 어노테이션을 부여해서 컨트롤러 클래스로 생성

 

스프링 MVC에서 GET 메소드와 POST 메소드 요청으로 처리를 나누려면, @RequestMapping 어노테이션의

method요소를 지정한다.

 

@RequestMapping(method = RequestMethod.GET)

public String toLoginView() {

           return "login";

           // 컨트롤러의 리턴값은 ModelAndView, String, void 등 가능

}

 

@RequestMapping(method = RequestMethod.POST)

public ModelAndView onSubmit(User user, BindingResult bindingResult) {

           // User 인스턴스로 값을 받는다.

 

           // BindingResult 입력된 값을 변환시키거나 검증한 결과를 저장하는 클래스

           this.loginValidator.validate(user, bindingResult);

}

 

@ModelAttribute

@ModelAttribute 어노테이션을 사용해서, 요청 파라미터를 지정하는 인스턴스를 생성하는 메서드를 지정

@ModelAttribute 어노테이션을 부연한 메소드 setUpForm()에서 User인스턴스를 생성해서 반환

Controller 클래스 파일에서 @ModelAttribute 어노테이션을 사용한 메소드에서 Model을 설정.

 

@ModelAttribute

public User setUpForm() {                     // 메소드 이름 상관 없음

           return new User();

}

 

BindingResult 클래스

화면으로부터 입력된 값을 변환시키거나 검증한 결과를 저장하는 클래스.

onSubmit() 메소드처럼 요청에 대응하는 메서드인 경우, 인수에 BindingResult 타입 변수를 정의하면,

스프링 MVC BindingResult 인스턴스를 제공.

 

검증을 실행한 결과 오류가 있다면, 원래 화면으로 돌아갑니다.

if (bindingResult.hasErrors()) {

           // 로그인 화면을 표시할 때, 입력 값을 유지하기 위해 BindingResult 인스턴스에서 모델을 꺼내

           // ModelAndView 인스턴스에 저장

           modelAndView.getModel().putAll(bindingResult.getModel());

           return modelAndView;

}

 

[LoginValidator 클래스]

스프링이 제공하는 Validator 클래스는 supports() 메소드 및 validator() 메소드를 정의

Validator 인터페이스를 구현하는 클래스는 supports() 메소드로 검증 대상 클래스인지 확인.

Validate() 메소드로 실제 검증 처리를 구현.

 

validate 메소드는 검증 대상이 되는 인스턴스와 Errors 인스턴스를 인수로 받는다.

public void validate(Object command, Errors errors) {

}

 

Errors 클래스

Errors 클래스의 주요 메소드

reject(String errorCode) – 검증 대상인 클래스 자체에 대한 오류 정보를 설정

rejectValue(String field, String errorCode) – 검증 대상인 클래스의 각 필드에 대한 오류 정보를 설정

errorCode.filed 를 키로 해서 오류 메시지를 출력

 

[login.jsp]

스프링 폼 태그 - <form:form>, <form:input>

입력 항목을 어떤 클래스의 어떤 프로퍼티에 지정할 지 등을 지정할 수 있음.

modelAttribute 속성에는 모델 클래스 이름을 지정.

Controller 클래스 파일에서 @ModelAttribute 어노테이션을 사용한 메소드에서 Model을 설정

@ModelAttribute 을 사용한 메소드 (이름은 상관 없음)

 

<form:form modelAttribute="user" method="post" action="login.html">

</form:form>

 

스프링 태그 라이브러리 - <spring:hasBindErrors>, <spring:message>

<spring:message> 태그는 메시지 키로 메시지를 취득

<spring:hasBindErrors name="user">

           // 오류가 있으면 태그 안에 있는 부분을 표시합니다.

           // name 속성 값은 모델 이름

<c:forEach items="${errors.globalErrors}" var="error">

                     <spring:message code="${error.code}"  />

           </c:forEach>

</spring:hasBindErrors>

 

'Spring' 카테고리의 다른 글

스프링 - 상품 리스트  (1) 2014.10.31
스프링 Web Application 만들기 - 스프링 기본  (1) 2014.10.31
  
 «이전 1 ··· 15 16 17 18 19 20 21 ··· 77  다음»