您的位置:首页 > 其它

Servlet中的请求转发与包含

2015-02-28 14:45 253 查看
 

 上一篇博客简单的介绍了一下有关Servlet的知识,从宏观上能够了解Servlet是干嘛的,这篇就来谈一下在Servlet中经常用到的两个概念请求转发包含。

 1.什么是请求转发与包含

  在上一篇博客中我们大致了解了,Servlet是服务端的程序,用来接收客户端发过来的请求信息并处理信息。那么请求转发和包含就是表示由多个Servlet共同处理一个请求。比如说,客户端A向你挑战打架,如果你感觉自己不行的话,就可以转发给B,让B替你处理;或者你和B同志共同应对A的挑战,这就是包含。具体的流程图如下。



分析:根据上图可以得知,请求转发和请求包含都是处理的一次请求,所以服务器只会创建一个request对象和一个response对象,正如上面举得例子一样,都是处理的一次挑战的请求。因此图中的AServlet和BServlet中的request和response都是同一个域对象。既然两者共同拥有一份域对象,因此我们就可以把AServlet中的数据存放到域对象中,然后传到BServlet中再次获取。这就是request域的域范围,在一个请求链中。

2.请求转发实现

    请求转发就是Servlet将请求转送给其他的Servlet或服务器资源,具体的实现如下

    request.getRequestDispatcher("转发路径").forward(request,response)

   1.getRequestDispatcher(String path):返回值类型是RequestDispatcher

   2.forward(ServletRequest req,ServletResponse res):该方法时RequestDispatcher接口的方法,将请求从一个servlet转发到服务器上另一个资源。



3.请求包含实现

   请求包含就是指多个Servlet共同处理一个请求。

   request.getRequestDispatcher("转发路径").forward(request,response)

   Include(ServletRequest request,ServletResponse response):表示包含



   

 4.区别

   (1)相同点

      都是多个Servlet之间共同处理一个请求,并且在请求之间公用一个request对象和response对象

   (2)不同点

      如果是请求的话,那么前者将不能向客户端发出响应,这一工作就由后者来完成。

      请求包含大多应用在jsp页面中,完成多页面的合并。

 好了,上面讲解了太多的理论知识,估计能够从宏观上了解请求转发和包含到底是怎么回事了,下面就从代码实现上来深入的看一下。






内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: