response重定向就是當服務器接收到一個請求後在返回結果給客戶端告訴它在繼續訪問另外一個服務器或重新訪問當前服務器的另外一個資源的過程
由於發送重定向是服務器告訴客戶端再次發送請求。因此會改變請求路徑url。大概過程如下圖
1,response重定向
sendRedirect(String path);//使請求重定向到path
以下演示一個重定向,從servletDemo1重定向到servletDemo2
public class ServletDemo1 extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//重定向到servletDemo2
response.sendRedirect("servletDemo2");
}
public class ServletDemo2 extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
System.out.println("ServletDemo2");
}
}
啓動tomcat,訪問servletDemo1.
回車,然後會發現路徑發生了變化
觀察控制檯,結果如下
這就是一個重定向的過程實現
ps點:
1,重定向是告訴客戶端重新發起新的請求。所以request和response也會創建一個新的。
2,如果發生了重定向返回的狀態碼是302而不是200
3,重定向可以在path後面跟上參數就跟get方式一樣
public class ServletDemo1 extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//後面跟上參數
response.sendRedirect("servletDemo2?name=zhangsan");
}
}
public class ServletDemo2 extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String name = request.getParameter("name");
System.out.println("ServletDemo2:"+name);
}
}
執行結果如下:
4,重定向會改變請求的url,因爲客戶端發起了新的請求。