1.请求的转发
什么是请求的转发?
请求转发是指,服务器收到请求后,从一次资源跳转到另一个资源的操作叫请求转发。
RequestDispatcher requestDispatcher = req.getRequestDispatcher(“/servlet2”);
requestDispatcher.forward(req,resp);
servlet1
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
System.out.println("servlet1被调用");
req.setAttribute("王少","帅哥");
RequestDispatcher requestDispatcher = req.getRequestDispatcher("/servlet2");
requestDispatcher.forward(req,resp);
}
servlet2
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
System.out.println("servlet2被调用了");
Object name=req.getAttribute("王少");
System.out.println(name);
}
根据结果可得结论
1.浏览器的地址栏不会发生变化
2.这是一次请求
3.他们共享request域中的数据
2.请求的重定向
请求重定向,是指客户端给服务器发请求,然后服务器告诉客户端说。我给你一些地址。你去新地址访问。叫请求
重定向(因为之前的地址可能已经被废弃)。
resp.sendRedirect(“servlet2”);
servlet1
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
System.out.println("servlet1被调用");
req.setAttribute("王少","帅哥");
resp.sendRedirect("servlet2");
}
servlet2
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
System.out.println("servlet2被调用了");
Object name=req.getAttribute("王少");
System.out.println(name);
}
根据结果可得结论
1.浏览器地址栏会发生变化
2.这是两次请求
3.request域的数据不会共享