请求转发是指,服务器收到请求后,从一个资源跳转到另一个资源的操作叫请求转发。

请求转发特点:
- 浏览器地址栏不发生变化
- 请求即使发生转发,也认为是一次请求
- 共享request对象中的数据
- 可以通过请求转发访问WEB-INF下的资源
- 不可以访问工程外部的资源
示例
servlet1
public class Servlet1 extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//获取请求参数
String username = req.getParameter("username");
System.out.println("servlet1中查看参数:"+username);
req.setAttribute("key","servlet1已经处理完毕!!!");
//转发到servlet2
/**
* 请求转发必须要以 / 打头
* 可以通过请求转发访问 WEB-INF 下的资源
* */
//通过请求转发访问 WEB-INF 下的资源
//RequestDispatcher requestDispatcher = req.getRequestDispatcher("/WEB-INF/form111.html");
RequestDispatcher requestDispatcher = req.getRequestDispatcher("/servlet2");
requestDispatcher.forward(req,resp);
}
}
servlet2
public class Servlet2 extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//获取请求参数
String username = req.getParameter("username");
System.out.println("servlet2中查看参数:"+username);
//查看是否经过servlet1处理业务
Object key = req.getAttribute("key");
System.out.println("servlet1处理:"+key);
//处理自己的业务
System.out.println("servlet2 进行自己的业务处理");
}
}
运行: