请求转发是指,服务器收到请求后,从一次资源跳转到另一个资源的操作叫请求转发。
在Servlet1处:
1.获取请求的参数:
String username = request.getParameter("username");
2.*request.setAttribute().保存数据。在其他Servlet也能看到。
* 请求转发必须要以斜杠打头,/ 斜杠表示地址为:http://ip:port/工程名/ , 映射到 IDEA 代码的 web 目录。
3.转发给Servlet2:
获取路径:
*RequestDispatcher requestDispatcher = request.getRequestDispatcher("/Servlet2");
发送请求:
*requestDispatcher.forward(request,response);
在Servlet2处:
1.获取请求的参数:
String username = request.getParameter("username");
2. 查看 Servlet1处是否校验:
Object key1 = request.getAttribute("key1");
3.再处理自己的业务。
Servlet1
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// 获取请求的参数(办事的材料)查看
String username = request.getParameter("username");
System.out.println("在 Servlet1(柜台 1)中查看参数(材料):" + username);
// 域数据
// 在1处,给材料 盖一个章,并传递到 Servlet2(柜台 2)去查看
//setAttribute在此处保存,在其它Servlet也能看到。
request.setAttribute("key1","柜台 1 的章");
// 问路:Servlet2(柜台 2)怎么走
/**
* 请求转发必须要以斜杠打头,/ 斜杠表示地址为:http://ip:port/工程名/ , 映射到 IDEA 代码的 web 目录
<br/>
*
*/
RequestDispatcher requestDispatcher = request.getRequestDispatcher("/Servlet2");
//可以转发到WEB-INF目录下。
//不能访问工程以外的资源
// RequestDispatcher requestDispatcher = req.getRequestDispatcher("http://www.baidu.com");
// 走向 Sevlet2(柜台 2)
requestDispatcher.forward(request,response);
}
Servlet2
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// 获取请求的参数(办事的材料)查看
String username = request.getParameter("username");
System.out.println("在 Servlet2(柜台 2)中查看参数(材料):" + username);
// 查看 柜台 1 是否有盖章
Object key1 = request.getAttribute("key1");
System.out.println("柜台 1 是否有章:" + key1);
// 处理自己的业务
System.out.println("Servlet2 处理自己的业务 ");
}