-
리다이렉트란 현재 페이지에서 특정 조건일 경우 특정 페이지로 이동하는 것을 말한다.
예시문을 만들어보자
Controller에서
@RequestMapping(value="/modifyForm")
public String modifyForm(Model model, HttpServletRequest request){
HttpSession session = request.getSession();
Member member = (member) session getAttribute("member");
if(null == member){
reuturn "redirect:/";
else{
model.addAttribute("member", service.memberSearch(member));
}
return "/member/modifyForm";
}
에서 member 로그인이 null 값이라면 redirect해서 로그인 페이지로 이동하는 것이다.
인터셉트란
위와 같은 리다이렉트가 많을 경우에 사용하는데 HandlerInterceptor를 이용하여
DispatcherServlet과 Controller 사이에 preHandle() 이나 postHandle()을 놓거나
controller와 view가 작동을 맞추고 콜백을 하는 것을 afterCompletion()로 놓는 것으로 말한다.
이 중에서 preHandle()을 많이 사용하는데 그 이유는 Controller로 가기 전에 미리 제어할 수 있기 때문이다.
즉, HandlerInterceptor 인터페이스로 HandlerInterceptorAdapter라는 클래스를 만들어서 상속을 받아서 사용한다.
예시문을 만들어보자
public class CutomerInterceptor 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("Customer");
if(obj != null)
return true;
}
response.sendRedirect(request.getContextPath() + "/");
return false;
}
컨트롤러가 작동하기 전에 인터셉터 형식으로 preHandle()을 사용하여 미리 사용할 수 있다.
위의 예시문을 보면 리다이렉트 부분은 session이 null 값인 경우이다.
해당 인터셉터를 스프링 설정파일에서 설정할 경우 인터셉터와 리다이렉트까지 설정할 수 있다.
<interceptors>
<interceptor>
<mapping path="/cutomer/Login"/>
<mapping path="/customer/LogOut"/>
<beans: bean class ="com.bs.Exam.custom.CustomerLogInterceptor"/>
</interceptor>
</interceptors>
로 맵핑을 통해서 해당 인터셉터를 상속받은 클래스에 리다이렉트도 직접 사용할 수 있다.
또는 <mapping path="/customer/**/>로 전체를 맵핑한 후에
해당 부분을 <exclude-mapping path="/customer/login"/> 등으로 따로 빼내서도 표시할 수 있다.
'JSP&스프링 > 스프링 키포인트' 카테고리의 다른 글
[스프링] 커넥션풀의 정의와 ComboPooledDataSource 특징 정리하기 (0) 2023.02.01 [스프링] JDBC의 정의와 순서 단계 그리고 구현 방법 정리하기 (0) 2023.01.31 [스프링] 클라이언트와 서버와의 관계에서 쿠키와 세션의 정의와 쿠키와 세션에 관련된 어노테이션 예시문으로 정리하기 (0) 2023.01.30 [스프링] Controller 객체를 만들고 어노테이션을 사용해서 구현하는 방법 (0) 2023.01.30 [스프링] Service 와 DAO 객체를 만들고 어노테이션으로 사용해보는 예시문 만들기 (0) 2023.01.30 댓글