섹션 5. 연결
21강 리다이렉트, 인터셉트
21-1 리다이렉트(redirect)
지금의 페이지에서 특정 페이지로 전환하는 기능
@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:/"; //main 페이지로 리다이렉트
} else {
model.addAttribute("member", service.memberSearch(member));
}
return "/member/modifyForm";
}
ModelAndView를 이용하는 경우
@RequestMapping("/removeForm")
public ModelAndView removeForm(HttpServletRequest request) {
ModelAndView mav = new ModelAndView();
HttpSession session = request.getSession();
Member member = (Member) session.getAttribute("member");
if(null == member) {
mav.setViewName("redirect:/"); //main 페이지로 리다이렉트
} else {
mav.addObject("member", member);
mav.setViewName("/member/removeForm");
}
return mav;
}
21-2 인터셉터(Interceptor)
리다이렉트를 사용해야 하는 경우가 많은 경우 HandlerInterceptor(인터페이스)를 이용할 수 있다.
👉 HandlerInterceptor를 구현한 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);
}
}
스프링 설정 파일
<interceptors>
<interceptor>
<mapping path="/member/modifyForm"/> <!--interceptor가 작동하는 경우 설정-->
<mapping path="/member/removeForm"/>
<!--
<mapping path="/member/**"/> /member/아래에 들어오는 모든 경우에 작동
<exclude-mapping path="/member/joinForm"/> exclude를 제외한..
<exclude-mapping path="/member/join"/>
<exclude-mapping path="/member/loginForm"/>
<exclude-mapping path="/member/login"/>
<exclude-mapping path="/member/logout"/>
<exclude-mapping path="/member/modify"/>
<exclude-mapping path="/member/remove"/>
-->
<beans:bean class="com.bs.lec21.member.MemberLoginInterceptor"/>
</interceptor>
</interceptors>
'스터디📖 > Spring' 카테고리의 다른 글
5. 연결 - 3 (0) | 2021.07.22 |
---|---|
5. 연결 - 2 (0) | 2021.07.21 |
5. 연결 (0) | 2021.07.16 |
4. 설정 및 구현 - 7 (0) | 2021.07.15 |
4. 설정 및 구현 - 6 (0) | 2021.07.14 |