??请求重定向,是指客户端给服务器发请求,然后服务器告诉客户端,给你一些地址。你去新地址访问。叫请求重定向(因为之前的地址可能已经被废弃)。?
*WEB-INF目录受保护,浏览器无法直接访问。
public class Response1 extends HttpServlet {
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//设置响应状态码302,表示已搬迁
// response.setStatus(302);
// //设置响应头。说明新的地址在哪里
// response.setHeader("Location","http://localhost:8080/Servlet07/response2");
// //不共享数据
// request.setAttribute("response1","value");
//
response.sendRedirect("http://localhost:8080/Servlet07/response2");
}
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
}
}
public class Response2 extends HttpServlet {
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.getWriter().write("response2");
}
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
}
}
直接转发RequestDispatcher类的forward()方法。
间接转发HttpServletRequest类的sendRedirect()方法。
*请求的转发是服务器行为,请求重定向是客户端行为。 ? ?
请求重定向:服务器端在响应第一次请求的时候,让浏览器再向另外一个URL发出请求,从而达到转发的目的。它本质上是两次HTTP请求,对应两个request对象。//不共享数据request.setAttribute("response1","value");
请求的转发:客户端浏览器只发出一次请求,Servlet把请求转发给Servlet、HTML、JSP或其它信息资源,由第2个信息资源响应该请求,两个信息资源共享同一个request对象。//共享数据 ?
|