Fork me on GitHub

Servlet与JSP转发与包含---forward\include

在这之前,要明确几个概念

1.servlet对象由servlet容器创建,servlet的service()方法也由容器调用。一个servlet对象无法获得另一各servlet对象的应用。

2.请求范围

web应用范围:整个web应用的生命周期,与ServletContext对象的生命周期对应。web应用范围内的共享数据作为ServletContext对象的属性存在。

请求范围:服务器端响应一次客户请求的过程,从Servlet收到一个客户请求开始,到返回响应结果结束。与ServletRequest对象和ServletResponse对象的生命周期对应。请求范围内的共享数据可以作为ServletRequest对象的属性存在。

 

一、Servlet的转发和包含----web组件之间的协作的两个途径

 

请求转发:servlet(源组件)先对客户请求做一些预处理操作,然后把请求转发给其他web组件(目标组件)完成包括生成响应结果在内的后续操作。

包含:servlet(源组件)把其他web组件(目标组件)生成的响应结果包含到自身的响应结果中。

二者相同点

目标组件和源组件处理同一个客户的请求;共享同一个ServletRequest对象和ServletResponse对象。

目标组件可以为:html,jsp,servlet

都依赖javax.servlet.RequestDispatcher接口 

javax.servlet.RequestDispatcher接口表示请求分发器:

 include()包含目标组件

forward()请求转发给目标组件

 

获取RequestDispatche对象

调用ServletContext的getRequestDispatcher

调用ServletRequest的getRequestDispatcher

 

posted @ 2018-03-15 14:40  TaoTao~  阅读(173)  评论(0编辑  收藏  举报