Programming > JSP/HTML/JSTL

redirect 와 forward

리다이렉트와 포워드

※ forward는 현재의 URL이 요청후에도 변하지 않는다.

redirect : 파라메터 전달없이 새로운 URL로 다시 요청한다.
forward : 동일한 URI를 가지고 새로운 URL을 호출한다.(파라메터 전달)

JSP 페이지에서의 요청

※ redirect
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<c:redirect url="/login" />

※ forward
<jsp:forward page="/login"/>

인터셉터 (Interceptor) 상의 요청

@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {


※ redirect
=> session.setAttribute("userId", "adminUser");  // 파라메터 전달
=> 매개변수존재(RedirectAttributes redirect) :: redirect.addAttribute(key,value);

response.sendRedirect(request.getContextPath() + "/login");
return false;

※ forward
=> request.setAttribute("userId", "adminUser");  // 파라메터 전달
RequestDispatcher rd = request.getRequestDispatcher(request.getContextPath() + "/login");
rd.forward(request, response);
return false;

}

Controller 상의 요청

※ redirect
return "redirect:/login";

※ forward
return "forward:/login";