[Java] Redirect, Forward
forward
- 특정 서블릿에 대한 요청을 다른 서블릿이나 JSP로 넘겨준다. (파라미터도 같이 넘겨줄 수 있다.)
- URL주소는 처음 요청할 때의 값이 바뀌지 않으며, 서버 내부에서만 접근이 가능하다.
(Request 객체와 Response객체를 공유해서 사용한다.)
- 이동되는 페이지로 값을 넘기려면 Request객체의 setAttribute() 메서드로 데이터를 세팅하여 보내고 받는 쪽에서는 Request객체의 getAttribute()메서드로 데이터를 읽어온다.
- 형식) request.setAttribute("키 값", 데이터);
- 형식) request.getAttribute("키 값");
- 이동할 URL주소는 Context Path이후의 경로를 기술한다.
예를들어 원래 주소가 /servletTest/myurl.do 라고 하면 '/myurl.do'
서블릿 ResponseTest01 에서 setAttribute를 통해 tel 데이터를 이동할 페이지로 보냄
request.setAttribute("tel", "010-1234-5678");
이동할주소
RequestDispatcher rd = request.getRequestDispatcher("/responseFowardTest.do");
rd.forward(request, response);
서블릿 ResponseFowardTest 에서 파라미터로 넘어온 데이터를 받기
String userName = request.getParameter("username");
setAttribute()로 세팅한 데이터 받기
getAttribute는 항상 형변환을 해줘야한다
String tel = (String) request.getAttribute("tel");
클라이언트가 a.do를 요청 - > 서버의 a.do서블릿으로 요청신호가갈때 request, response 생성됨 - > b.do로 forward될때 request, response객체도 같이감-> 처리된 결과가 다시 클라이언트로 가는데 url주소는 처음 요청한 a.do주소로, b.do로 바뀌지않음.
Redirect
- 다른 페이지로 제어가 넘어가도록 한다. (이 때 직접 파라미터를 넘길 수 없다.)
- 응답 시 브라우저에게 '이동할URL'을 전송하여 브라우저가 해당 URL로 이동하는 방식이다.
(이 때는 무조건 GET방식으로만 이동한다.)- redirect방식은 Request객체를 유지하지 못한다.
(이유는 브라우저에게 새로운 요청을 하기 때문이다.) 그래서 url도 변경됨
- 명령 : response.sendRedirect("이동할 URL");
- 이동할 URL은 전체 URI주소를 기술한다.
클라이언트가 a.do를 요청(호출) -> request, response객체가 생기고 a.do로 감 - > a.do에서 b.do로 redirect로 가려고함 -> a.do에서 b.do로 redirect하기위해 클라이언트에게 신호를 보냄 -> 클라이언트는 신호를 받고 b.do에게 redirect요청&request, response객체 새로 생성됨 -> 클라이언트의 url주소도 b.do로 바뀜
서로다른 request, response객체라 데이터 공유가 안됨
ResponseTest02서블릿에서 데이터를 보냄. 데이터를 보내려면 GET방식으로 보낼수 있다.
String userName = request.getParameter("username");
response.sendRedirect(request.getContextPath()+ "/responseRedirectTest.do?username="+ userName + "&tel=010-9999-8888");
ResponseRedirectTest서블릿에서 데이터 받음
setAttribute()로 세팅한 데이터 받기 get으로 받아유
String tel = request.getParameter("tel");
Author And Source
이 문제에 관하여([Java] Redirect, Forward), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@vgo_dongv/Java-Redirect-Forward저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)