Servlet的请求转发

  • Post author:
  • Post category:其他



今天我们来介绍servlet的请求转发,通常在我们的实际开发中,由于功能的需求,可能一个servlet不足以实现一个功能,那么这时我们就需要多个servlet来实现该功能,就是通过servlet来去调用其他的servlet。


我们通过HttpServletRequest对象有一个getRequestDispatcher()方法,可以获得一个分发器,将我们需要转发的资源名写进去,然后调用forward()。这里我们需要注意一下,我们这个给hrrpServletRequest是一个域对象,它可以setAttribute往里面放入数据,getAttribute。因此我们在转发时,将我们的request对象穿给我们的目标servlet,那么我们的目标servlet就可以使用我们放入的数据了。

 RequestDispatcher requestDispatcher = req.getRequestDispatcher("/registerServlet");
        requestDispatcher.forward(req,resp);


servlet是如何实现请求转发的


我们都知道,浏览器发送一个请求到服务器,服务器将请求封装然后找到对应的servlet对业务进行处理,那么这时我们就可以使用请求转发,tomcat就会对应的根据我们的资源名找到servlet,再在下一个servlet进行业务的处理,然后然会数据给浏览器,这里需要注意的是,我们请求转发的所有的过程,都只是在服务端完成的,没有涉及到客户端/浏览器,浏览器的状态栏的地址是没有更改的,一般我们使用请求转发完成一个用户信息的校验,根据用户输入的ID等,判断用户是什么身份,然后请求转发到对应的界面,在进行多次的请求转发,仍然只是一次的Http请求,可以转发到web-info的资源。


接下来我们就来介绍请求转发的流程,由于请求转发是在服务器内部完成的,所以我们使用的request对象的getrequestdispatcher的分发器,我们可以使用这个分发器来指定我们转发的位置,然后调用foward(request,response)来进行转发,如果我们请求转发的资源是servlet,tomcat(服务器)就会根据web.xml文件找到指定的servlet,最后所有的业务都完成后,servlet就会将数据返回给服务器,再由服务器将资源封装成http响应的形式发送给浏览器,浏览器则会以响应的方式获取数据




版权声明:本文为wfsfd13123原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。