目录
1. 重定向的概念:
客户端的一次请求到达后,发现需要借助其他 Servlet 来实现功能。
比如,ServletA和ServletB, ServletA完成后会返回给浏览器, 并告诉浏览器去找ServletB, 并且将ServletB的地址写在响应头里告诉浏览器. 浏览器就会根据返回的信息向ServletB发起请求.
2. 重定向的实现案例:
重定向的实现步骤:
设置状态码为302
设置响应头location
示例代码
@WebServlet("/demo1")
public class ServletDemo1 extends HttpServlet {
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//重定向分为两步
//1. 设置状态码为302
response.setStatus(302);
//2. 设置响应头location
response.setHeader("Location","https://www.baidu.com/");
}
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doPost(request, response);
}
}
简化版:(推荐使用)
@WebServlet("/demo1") public class ServletDemo1 extends HttpServlet { public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //重定向分为两步 //1. 设置状态码为302 //2. 设置响应头locatio response.sendRedirect("https://www.baidu.com/"); } public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doPost(request, response); } }
3. 重定向与转发的区别
response 重定向(redirect)的特点:
地址栏发生变化。
重定向可以访问其他站点(服务器)的资源(即可在多台服务器之间进行请求与响应)。
重定向是两次请求。不能使用request对象来共享数据。
request 转发(forward)的特点:
- 转发地址栏路径不变。
- 转发只能访问当前服务器下的资源(即只进行服务器内部转发)。
- 转发是一次请求,可以使用request对象来共享数据。
如果对你有帮助,请帮我点一下赞,我才有动力继续创作,谢谢!