flowControl
HTTP : Connectless(비연결성), Stateless(무상태)
1. Dispatch : RequestDispatcer 를 이용해서 서버내에서 이동 ,
- Request(요청)이 살아있는 상태에서 수행을 이동시킨다.
- Request Scope를 이용해 테이터(Attribute)를 공유할 수 있다.
- RequestDispatcher 객체를 이용해 처리
- 자바 구문 : RequestDispatcher dispatcher = request.getRequestDispatcher("url");
dispatcher.forward(request, response);
1) forward : 최종 도착지에서 완전한 UI가 전송되는 구조.
forward()[전달하기]는 클라이언트가 요청하면서 전송한 데이터를 그대로 유지한다.
- req.getRequestDispatcher(view).forward(req, resp);
- req를 보내서 forward는 서블릿의 req와 jsp의 req가 같은 놈이다.
- WEB-INF에서 접속은 forward 방식만 가능 Redirect는 불가능
- forward에서 최소의 스코프는 request이다.
2) include : 출발지와 도착지에서 만들어진 모든 UI가 전송되는 구조.
2. Redirect : 최초 요청이 전송되고, 일부 처리가 이루어진 후,
body가 없고, 302/307(location) 메타 데이터를 가진 응답이 클라이언트로 전송,
브라우저는 location 방향으로 새로운 요청을 전송하고,
최종 응답이 최종 도착지에서 전송됨.
- Redirect()[이동하기]는 새로운 페이지로 완전히 이동해서 기존 데이터를 하나도 사용할 수 없다.
- 응답시 클라이언트에게 요청할 url을 알려주어 다시 요청하도록 하는 방식
- 요청과 응답이 한번 더 일어난다.
- Request Scope를 이용한 데이터(Attribute)공유를 할 수 없다.
- HttpServletResponse 객체를 이용해 처리
- 자바 구문 : response.sendRedirect("url");
- resp.sendRedirect(req.getContextPath()+view);
- redirect에서 최소의 스코프는 세션이다.