Servlet中的请求转发与包含

 

 上一篇博客简单的介绍了一下有关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页面中,完成多页面的合并。

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




评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值