ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 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>




    반응형

    댓글

Designed by Tistory.