컨트롤러에서 뷰를 분기하는 방법과 컨트롤러 실행 전/후에 특정 작업을 가능하게 하는 방법에 대해서 학습합니다.
리다이렉트(redirect)
지금의 페이지에서 특정 페이지로 전환하는 기능
리다이렉트 구조 | 내용 |
순서 1) 회원정보 수정 요청 2) 회원인증 여부 결정(Y/N) : (로그인 되어있나?) 2-1) Y이면 회원정보 수정 페이지로 유도 2-2) N이면 return "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";
}
인터셉터(interceptor)
리다이렉트를 하는 경우가 많은 경우 HandlerInterceptor를 사용
구조 | 설명 |
1) 클라이언트가 요청한다. 2) 원래면 핸들러,뷰(4,5,7,8)로 바로가야하지만 3, 6, 9를 거치는 인터페이스(HanderfInterceptor)를 발생 시킨다. - preHandle() 컨트롤러 작업전에 작동(가장 많이 사용) - postHandle() 컨트롤러 작업후에 작동 - afterHandle() 컨트롤러 뷰 이후에 작동 직접 구현은 어렵고 HanderfInterceptorAdaptor를 사용(spring에서 사용) |
bean 객체 등록
mapping으로 적용되는 범위를 한정 지어준다. /member/modifyForm or /member/removeForm 이 작동하면 해당 경로의 인터셉터를 작동시켜라 라는 의미
<interceptors>
<interceptor>
<mapping path="/member/modifyForm"/>
<mapping path="/member/removeForm"/>
<beans:bean class="com.bs.lec21.member.MemberLoginInterceptor"/>
</interceptor>
</interceptors>
'Spring > [인프런] Spring FrameWork' 카테고리의 다른 글
Spring 커넥션풀(c3p0) (0) | 2022.01.09 |
---|---|
Spring JDBC 연동 & JDBC Template (0) | 2022.01.08 |
세션, 쿠키 (0) | 2022.01.03 |
Controller 객체 구현 (0) | 2021.12.31 |
Service & Dao 객체 구현 (0) | 2021.12.30 |