목차로 돌아가기

컨트롤러에서 뷰를 분기하는 방법과 컨트롤러 실행 전/후에 특정 작업을 가능하게 하는 방법에 대해서 학습합니다.

리다이렉트(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

+ Recent posts