프로그래밍/Servlet&JPS

05. Servlet : sendRedirect

pupu91 2022. 8. 23. 19:55
반응형

sendRedirect 

사용자 url 재작성이라고 불리는 redirect 방식은 302번 응답코드인 경우 요청에 대한 처리를 잘 했으며 사용자의 url을 강제적으로 redirect 경로로 이동시키라는 의미

 

- redirect를 하는 경우 url이 재작성 되어서 새로 고침 해도 redirect 된 페이지에 대한 요청만을 반복함(이전 요청에 남아있던 정보는 남아 있지 않음)

 

- http 요청은 요청 시에 잠시 connection을 맺고 응답 시에도 잠시 connection을 맺으며 요청 단뒤 당request 객체는 한 개만 생성 됨

 

- 첫 요청의 request와 redirect된 페이지의 request는 서로 다른 객체이고 redirect를 사용하면 이전 서블릿과의 값을 공유해서 사용할 수 없게 됨.

 

- redirect시에도 값을 유지하기 위해서는 쿠기와 세션은 이용해야 함.

 


 

sendRedirect  사용 방법

: response.sendRedirect(이동할 주소 값 or 경로입력)

 

 

1. HTML 작성

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>

	<h1 align="center">redirect</h1>
	
	<ul>
		<li><a href="othercite"> 다른 웹 사이트로 redirect 테스트</a></li>
		<li><a href="otherservlet"> 다른 서블릿으로 redirect 테스트</a></li>
	</ul>
	
</body>
</html>

 

 

 

2. 재설정 할 경로 서블릿 작성

@WebServlet("/otherservlet")
public class OtherServletRedirectTest extends HttpServlet {
	
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		System.out.println("get 요청 정상 수락");
		response.sendRedirect("redirect"); 
        => http://localhost:8000/chap07/(여기있는 값만 변경하게 명령)		
	}
}

 

 

반응형

 

3. 변경한 경로에 보여질 페이지 서블릿 작성

@WebServlet("/redirect")
public class RedirectServlet extends HttpServlet {
	★sendRedirect는 무조건 doGet
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		
		
		StringBuilder reponseText = new StringBuilder();
		reponseText.append("<!doctype html\n")
		  		 .append("<html>\n")
		  		 .append("<head>\n")
		  		 .append("</head>\n")
		  		 .append("<body>\n")
		  		 .append("<h1 align = 'center'>")
		  		 .append("이 Servlet으로 redirect 성공!")
		  		 .append("</h1>")
		  		 .append("</body>\n")
		  		 .append("</html>");
		
		response.setContentType("text/html; charset=UTF-8");
		
		PrintWriter out = response.getWriter();
		out.print(reponseText.toString());
		out.flush();
		out.close();     
   }
  }

 

반응형

'프로그래밍 > Servlet&JPS' 카테고리의 다른 글

07 Servlet : Filter  (0) 2022.08.24
06 Servlet : Session과 Cookie  (0) 2022.08.23
04. Servlet : forward  (0) 2022.08.23
03 Servlet : Error message 와 page 만들기  (0) 2022.08.23
02 . Servlet : 서블릿 메소드  (0) 2022.08.23