(1)请求转发
servlet1
@WebServlet("/forward/servlet1")
public class servlet1 extends HttpServlet {
protected void service(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
resp.setContentType("text/html;charset=utf-8");
PrintWriter out = resp.getWriter();
String name = req.getParameter("name");
//======================
System.out.println("servlet1请求转发之前1"+name);
out.println("servlet1请求转发之前2");
//======================
req.getRequestDispatcher("/forward/servlet2").forward(req, resp);
System.out.println("servlet1请求转发之后3");
out.println("servlet1请求转发之后4");
}
}
servlet2
@WebServlet("/forward/servlet2")
public class serlvet2 extends HttpServlet{
protected void service(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
resp.setContentType("text/html;charset=utf-8");
PrintWriter out = resp.getWriter();
System.out.println("servlet2请求转发之前1");
out.println("servlet2请求转发之前2"+req.getParameter("name"));
}
}
请求转发特点:
1、浏览器请求地址不发生改变
2、请求转发只发送一个请求
3、共享同一个请求的数据
4、最终的响应有最后一个转发servlet左右
5、请求转发不能跨域访问,只能跳转到当期应用中的资源
6、请求转发可以访问WEB-INF中的资源
(2)URL重定向
方法:sendRedirect
1、浏览器的地址发生改变
2、URL重定向发了两次请求
3、URL重定向是两次独立请求,不会共享数据
4、最终的响应由servlet2决定
5、URL重定向能够跨域访问
6、URL重定向不能访问WEB-INF中的资源