-
03. 커맨드 객체 값 검증과 에러 메시지, Interceptor [Spring]Spring 2016. 11. 3. 11:03반응형
01. 커맨드 객체 값 검증과 에러 메시지
pom.xml 에
valiation-api
hibernate-validator 추가
기존 form 태그를 form:form 으로 교체
- commandName : form의 ID
- method : form 의 Method
- action : form 의 Action
<form:errors path="inputId적용" cssClass="css에있는Class적용"/>
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>
<form:form commandName="employeesVO"
method="post"
action="/HelloMVC/hr/doAddEmployeeAction">
<label for="employeesId">사번 : </label>
<input type="text" id="employeesId" name="employeesId" /> <br/>
<form:errors path="employeesId" /> <br/>
<label for="lastName">이름 : </label>
<input type="text" id="lastName" name="lastName" /> <br/>
<form:errors path="lastName" /> <br/>
<label for="email">이메일 : </label>
<input type="text" id="email" name="email" /> <br/>
<form:errors path="email" /> <br/>
<label for="jobId">직무번호 : </label>
<input type="text" id="jobId" name="jobId" /> <br/>
<form:errors path="jobId" /> <br/>
<input type="submit" value="등록"/> <br/>
</form:form>
indexController 에서
@RequestMapping("hr/doAddEmployeeAction")
public ModelAndView doAddEmployeeAction(@Valid EmployeesVO employee, Errors errors) {
ModelAndView view = new ModelAndView();
if( errors.hasErrors() ) {
view.setViewName("hr/addNewEmployee");
}
else {
boolean isSuccess = indexService.addNewEmployee(employee);
view.setViewName("redirect:/hr/employees");
}
return view;
}
<!-- Command Validator -->
<bean id="validator"
class="org.springframework.validation.beanvalidation.LocalValidatorFactoryBean"/>
employeesVO에 @NotNull과 @NotEmpty 추가하기.
02. Interceptor
- 보통 인증/인가 작업을 할때 사용
기능
-preHandle : 요청이 Contoller를 실행하기전에 하는 것. (자주 씀)
-postHandle : Interceptor가 흘려보내고 Controller가 리턴한 ModelAndView를 검증하는것.
-afterCompletion : Controller에가서 view가 갔을때 실행 한다. (잘 안씀)
DispatcherServlet 설정
새롭게 common.interceptor (패키지)을 추가하고 URLInterceptor.java를 생성한다.
URLInterceptor.java
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;
public class URLInterceptor extends HandlerInterceptorAdapter {
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
throws Exception {
System.out.println("클라이언트가 접속함!");
System.out.println(request.getRemoteAddr()); // 클라이언트의 IP
// true를 리턴할 경우 Controller에게 요청을 넘긴다.
// false를 리턴할 경우 Controller에게 요청을 넘기지 않고 응답처리 한다.
return true;
}
@Override
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler,
ModelAndView modelAndView) throws Exception {
System.out.println("컨트롤러 실행을 끝마침!");
}
}
applicationContext.xml
<!-- Interceptor 등록 -->
<mvc:interceptors>
<mvc:interceptor>
<mvc:mapping path="/**"/>
<bean id="urlInterceptor"
class="com.ktds.common.interceptor.URLInterceptor"/>
</mvc:interceptor>
</mvc:interceptors>
반응형'Spring' 카테고리의 다른 글
05. 예외처리, File Upload [Spring] (0) 2016.11.04 04. SLF4J와 Logback을 이용한 로그 남기기 [Spring] (0) 2016.11.03 02-3. ORM : MyBatis (Parameter 받기) [Spring] (0) 2016.11.02 Invalid LOC Header 오류 해결법 (0) 2016.11.02 02-2. ORM : MyBatis 연동하기 (Mapper, Configration ) [Spring] (0) 2016.11.02