* 포워드 : 하나의 서블릿에서 다른 서블릿이나 JSP와 연동하는 방법
* 포워드 4가지 방식
1. redirect
- HttpServletResponse 객체의 sendRedirect() 메서드 이용
- 웹 브라우저에 재요청하는 방식
- 형식 : sendRedirect("포워드할 서블릿 또는 JSP")
2. Refresh
- HttpServletResponse 객체의 addHeader() 메서드 이용
- 웹브라우저에 재요청하는 방식
- 형식: response.addHeader("Refresh", "경과시간(초); url=요청할 서블릿 또는 jsp")
3. location
- 자바스크립트 location 객체의 href 속성을 이용
- 자바스크립트에서 재요청하는 방식
- 형식: location.href='요청할 서블릿 또는 jsp'
4. dispatch
- 일반적으로 포워딩기능을 지칭
- 서블릿이 직접 요청하는 방법
- RequestDispatcher 클래스의 forward() 메서드를 이용합니다.
- 형식: RequestDispatcher dis = request.getRequestDispatcher("포워드할 서블릿 또는 jsp");
dis.forward(request,response);
1,2,3 방법은 서블릿이 웹브라우저를 거쳐 다른 서블릿이나 jsp에게 요청하는 방식
4번 방법은 서블릿에서 바로 다른 서블릿에 요청하는 방법!
'
+) dispatch 는 서블릿의 이동이 있더라도 url의 변경이 일어나지 않는다.
ex) /first 서블릿에서 /second 서블릿으로 이동해도 localhost:8080/first로 보인다.
다른 방식들은 웹브라우저를 거치기 때문에 url의 변경이 일어난다.
전달하는 데이터의 양이 적을 경우에는 get방식(ex. response.sendRedirect("서블릿이름?데이터이름=데이터값"))으로
데이터 전달을 하면 되지만
대량의 데이터를 공유하거나 전달하고 싶을 경우 바인딩 기능을 사용한다.
* 바인딩 : 웹 프로그램 실행 시 데이터를 서블릿 관련 객체에 저장하는 방법.
주로 HttpServletRequest, HttpSession, ServletContext 객체에서 사용된다.
저장된 데이터는 프로그램 실행 시 서블릿 또는 JSP에서 공유하여 사용한다.
* 바인딩 관련 메서드
- setAttribute(String name, Object obj) : 자원을 각 객체에 바인딩한다.
request.setAttribute로 사용.
- getAttribute(String name) : 각 객체에 바인딩된 자원을 name으로 가져온다.
request.getAttribute로 사용.
request.setAttribute에 담아온 내용을 받아옵니다.
- removeAttribute(String name) : 각 객체에 바인딩된 자원을 name으로 제거한다.
+) response.sendRedirect로는 request.setAttribute값 전달안됨!
첫번째 전달된 서블릿의 request와 redirect를 통해서 두번째로 전달되는 서블릿의 request가 다르기 때문에~
dispatch는 request를 그대로 두 번째 서블릿으로 포워드하기 때문에 값을 받아 올 수 있다.
ex) RequestDispatcher dis = request.getRequestDispatcher("두번째 서블릿");
dispatch.forward(request,response);
'컴퓨터 공부 > JAVA Web' 카테고리의 다른 글
JSP (0) | 2021.08.10 |
---|---|
세션(Session) (0) | 2021.08.09 |
쿠키(Cookie) (0) | 2021.08.09 |
세션 트래킹(Session Tracking) (0) | 2021.08.08 |
ServletContext/ ServletConfig (0) | 2021.08.05 |
댓글