반응형
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 |