欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Servlet请求转发的步骤和实例

程序员文章站 2022-07-09 19:16:49
请求转发一次请求Servlet对应的request对象,在此request中存储数据,可以在此request对象中取出;但是在另一次请求Servlet对应的request对象,是没有第一次请求时在request对象中添加的数据的要解决这个不同请求对应的不同request对象之间传递,需要使用请求转发技术。步骤获取请求转发器对象调用请求转发器的forward()方法即可完成转发/* /a路径对应AServlet,/b路径对应BServlet, 通过request对象的ge...

请求转发

一次请求Servlet对应的request对象,在此request中存储数据,可以在此request对象中取出;但是在另一次请求Servlet对应的request对象,是没有第一次请求时在request对象中添加的数据的

要解决这个不同请求对应的不同request对象之间传递,需要使用请求转发技术

步骤

  1. 获取请求转发器对象
  2. 调用请求转发器的forward()方法即可完成转发
/*
    /a路径对应AServlet,/b路径对应BServlet,

    通过request对象的getRequestDispatcher方法获取请求转发器对象,
    然后调用请求转发器对象的forward方法进行转发
    
    以下代码是从AServlet转发到BServlet
*/ //获取请求转发器,以下转发器指向了BServlet RequestDispatcher requestDispatcher = request.getRequestDispatcher("/b"); //调用请求转发器的forward() requestDispatcher.forward(request,response); 

实例

第一次请求AServlet,在AServlet中的request对象中存储数据后,通过请求转发,转发到BServlet,BServlet对应的request对象中包含了AServlet对应的request对象的数据,数据被传递了,实现了跨请求(跨Servlet)传递数据

/*AServlet*/ public class AServlet extends HttpServlet { @Override protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { User admin = new User(111, "admin"); request.setAttribute("user",admin); //向request范围中存数据 //转发 request.getRequestDispatcher("/b").forward(request,response); } } /*BServlet*/ public class BServlet extends HttpServlet { @Override protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html;charset=UTF-8"); PrintWriter writer = response.getWriter(); Object user = request.getAttribute("user"); //从request范围中取数据 writer.print(user); } } 

转发过程

以上述实例为例

  1. 浏览器向AServlet发出访问请求;
  2. AServlet调用forward()方法,在服务器端将请求转发给BServlet;
  3. 最终由BServlet做出响应

特点

在浏览器端进行一次请求,服务器端将请求从一个Servlet转发给另一个Servlet…,浏览器端的地址不变,但是实际上可能后台是好几个Servlet依次处理浏览器的请求,并相应给浏览器

Servlet请求转发的步骤和实例

关于范围对象的选择

ServletContext 应用范围极大,可以跨用户传递数据,整个webapp只有一个ServletContext对象

ServletRequest请求范围小,只能在同一个请求中传递数据【跨Servlet传递数据,需要使用请求转发技术】

优先选择使用ServletRequest传递数据

总结

请求转发可以跨Servlet(跨请求)传递数据,一次请求对应的Servlet中的request对象的数据,可以传递给请求转发的另一个Servlet的request对象

请求转发,是一次请求

本文地址:https://blog.csdn.net/qq_42179997/article/details/108036031