Spring/Study
2020. 4. 18. 21:28
(공감과 댓글 하나는 글쓴이에게 큰 힘이 됩니다.)
리다이렉트(Redirect)
- 리다이렉트(Redirect)는 컨트롤러에서 뷰를 분기하는 방법으로, 현재 페이지에서 특정 페이지로 전환하는 기능이다.
Model
@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";
}
|
cs |
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:/");
} else {
mav.addObject("member", member);
mav.setViewName("/member/removeForm");
}
return mav;
}
|
cs |
인터셉트(Intercept)
- 리다이렉트를 사용해야 하는 경우가 많은 경우 HandlerInterceptor를 이용하여 효율적으로 관리할 수 있다.
- preHandle() : Controller 작업 전
- postHandle() : Controller 작업 후
- afterCompletion() : Controller와 View 작업 후
MemberLoginInterceptor.java
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);
}
}
|
cs |
servlet-context.xml (2개의 방법 모두 사용가능)
<interceptors>
<interceptor>
<mapping path="/member/modifyForm"/>
<mapping path="/member/removeForm"/>
<beans:bean class="com.bs.lec21.member.MemberLoginInterceptor"/>
</interceptor>
</interceptors>
|
cs |
<interceptors>
<interceptor>
<mapping path="/member/**"/>
<exclude-mapping path="/member/joinForm"/>
<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 > Study' 카테고리의 다른 글
스프링(Spring) JdbcTemplate (0) | 2020.04.19 |
---|---|
스프링(Spring) JDBC (0) | 2020.04.19 |
스프링(Spring) 세션(Session), 쿠키(Cookie) (0) | 2020.04.18 |
스프링(Spring) Controller 객체 구현 2 (0) | 2020.04.17 |
스프링(Spring) Controller 객체 구현 1 (0) | 2020.04.17 |