리다이렉트, 인터셉트

2019. 5. 16. 22:52Spring

리다이렉트

  1. 회원 정보 수정 요청
  2. 지금 로그인이 되어 있나?
    1. 로그인 되어 있을 경우 회원 수정 페이지로 이동
    2. 로그인 되어 있지 않을 경우 메인 페이지로 이동 → redirect

 

// Modify

@RequestMapping(value = "/modifyForm")

public String modifyForm(Model model, HttpServletRequest request) {

     

    HttpSession session = request.getSession();

    Member member = (Member) session.getAttribute("member");

     

    if(null == member) {

        return "redirect:/";

    } else {

        model.addAttribute("member", service.memberSearch(member));

    }

     

    return "/member/modifyForm";

}

 

인터셉트

  1. preHandle() → 컨트롤러가 작동하기 전 
  2. postHandle() → 컨트롤러가 작동한 후
  3. afterCompletion() → 컨트롤러 뷰가 다 작동한 후

 

 

  • preHandle(), postHandle(), afterCompletion()

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import javax.servlet.http.HttpSession;

 

import org.springframework.web.servlet.ModelAndView;

import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;

 

public class MemberLoginInterceptor extends HandlerInterceptorAdapter {

 

    @Override

    public boolean preHandle(HttpServletRequest request,

            HttpServletResponse response, Object handler) throws Exception {

         

        HttpSession session = request.getSession(false);

        if(session != null) {

            Object obj = session.getAttribute("member");

            if(obj != null)

                return true;

        }

         

        response.sendRedirect(request.getContextPath() + "/");

        return false;

    }

     

    @Override

    public void postHandle(HttpServletRequest request,

            HttpServletResponse response, Object handler,

            ModelAndView modelAndView) throws Exception {

         

        super.postHandle(request, response, handler, modelAndView);

    }

     

    @Override

    public void afterCompletion(HttpServletRequest request,

            HttpServletResponse response, Object handler, Exception ex)

            throws Exception {

         

        super.afterCompletion(request, response, handler, ex);

    }

}

 

  • servlet-context.xml

 

<interceptors>

    <interceptor>

        //member/modifyForm, member/removeForm은 MemberLoginInterceptor 처리를 해라

        <mapping path="/member/modifyForm"/>

        <mapping path="/member/removeForm"/>

        <!--

        //member로 들어오는곳은 전부 MemberLoginInterceptor 처리를 해라!

        <mapping path="/member/**"/>

        //member/joinForm은 제외 해라!

        <exclude-mapping path="/member/joinForm"/>

        -->

        <beans:bean class="com.bs.lec21.member.MemberLoginInterceptor"/>

    </interceptor>

</interceptors>

 

'Spring' 카테고리의 다른 글

[Spring] MVC model 1, 2 - 개념 및 설계구조  (0) 2019.05.17
세션, 쿠키  (0) 2019.05.16
DI(Dependency injection)  (0) 2019.05.16