request 请求转发:一种在服务器内部的资源跳转方式
步骤:
1.通过request对象获取请求转发器对象:RequestDispatcher getRequestDispatcher(String path)
2.使用RequestDispatcher对象来进行转发:forward(ServletRequest request, ServletResponse response)
特点:
1. 浏览器地址路径不发生改变
2. 只能转发到当前服务器内部资源中
3. 转发是一次请求
request 共享数据(域对象)
* 域对象:一个有作用范围的对象,可以在范围内共享数据
* request域:代表一次请求的范围,一般用于请求转发的多个资源*享数据
* 方法:
1. void setAttribute(String name,Object obj):存储数据
2. Object getAttribute(String name):通过键获取值
3. void removeAttribute(String name):通过键移除键值对
servletA:
@WebServlet("/RequestDemo8")
public class RequestDemo8 extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
System.out.println("demo8............");
//转发到demo9 // RequestDispatcher requestDispatcher = request.getRequestDispatcher("/RequestDemo9");
// requestDispatcher.forward(request,response); //存储数据到request域中
request.setAttribute("flypig","666"); request.getRequestDispatcher("/RequestDemo9").forward(request,response);
} protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//get获取请求参数 //根据参数名称获取参数值
// String username = request.getParameter("username");
// System.out.println("get");
// System.out.println(username); this.doPost(request,response);
}
}
servletB:
@WebServlet("/RequestDemo9")
public class RequestDemo9 extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //获取数据,
Object attribute = request.getAttribute("flypig");
//转发资源时才能共享数据
System.out.println(attribute); System.out.println("demo9..........."); } protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//get获取请求参数 //根据参数名称获取参数值
// String username = request.getParameter("username");
// System.out.println("get");
// System.out.println(username); this.doPost(request,response);
}
}