1. Response设置响应数据功能和完成重定向
示例:
("/resp1")
public class ResponseDemo1 extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
System.out.println("resp1....");
//重定向
//1.设置响应状态码 302
response.setStatus(302);
//2. 设置响应头 Location
response.setHeader("Location","http://localhost:8080/request-demo/resp2");
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
this.doGet(request, response);
}
}
("/resp2")
public class ResponseDemo2 extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
System.out.println("resp2....");
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
this.doGet(request, response);
}
}
控制台输出
简化方式完成重定向:
//简化方式完成重定向
response.sendRedirect("/request-demo/resp2");
response.sendRedirect("https://www.baidu.com");
重定向可以定向到任意位置的资源
并且两次请求,不能在多个资源使用request共享数据
2. 路径问题
在获取虚拟目录时,可以采用动态获取,降低耦合
//简化方式完成重定向
//动态获取虚拟目录
String contextPath = request.getContextPath();
System.out.println(contextPath);
response.sendRedirect(contextPath+"/resp2");