filter中的dispatcher标签解析
来源:互联网 发布:mac软件 编辑:程序博客网 时间:2024/06/01 10:52
一、forward和include
RequestDispatcher提供两个方法forward和include进行资源跳转。
不同的是,如果使用forward跳转则其后面的response输出则不会执行,而用include来跳转,则include的servlet执行完后,再返回到原来的servlet执行response的输出(如果有)。
实例:
servlet A
RequestDispatcher disp = request.getRequestDispatcher("B");disp.forward(request, response);System.out.println("servlet A completed");PrintWriter pw = response.getWriter();pw.println("servlet A");
servlet B
PrintWriter pw = response.getWriter();pw.println("servlet B");
输出结果:
控制台:servlet A completed
页面:servlet B
这表示在forward方法后的pw.println("servlet A")
并未执行
如果将forward换成include的话,则结果为:
控制台:servlet A completed
页面:servlet B servlet A
这表示include的servlet执行完后,再返回到原来的servlet执行response的输出。
注意:如果在servlet B里吧pw给close掉了的话,那servlet A 这里就无法输出了,则结果就和第一个一样。
二、dispatcher元素
2.4版本的servlet规范在部属描述符中新增加了一个<dispatcher>
元素,这个元素有四个可能的值:即REQUEST,FORWARD,INCLUDE和ERROR,可以在一个<filter-mapping>
元素中加入任意数目的<dispatcher>
,使得filter将会作用于直接从客户端过来的request(REQUEST),通过forward过来的request(FORWARD),通过include过来的request(INCLUDE)和通过<error-page>
过来的request(ERROR)。如果没有指定任何< dispatcher >
元素,默认值是REQUEST。
注意:<dispatcher></dispatcher>
必须写在filter-mapping的最后。dispatcher的前提条件当然是要先满足url-pattern,然后dispatcher有四种可能的属性:
1、REQUEST
只要发起的操作是一次HTTP请求,比如请求某个URL、发起了一个GET请求、表单提交方式为POST的POST请求、表单提交方式为GET的GET请求。一次重定向则前后相当于发起了两次请求,这些情况下有几次请求就会走几次指定过滤器。
2、FOWARD
只有当当前页面是通过请求转发转发过来的情形时,才会走指定的过滤器
3、INCLUDE
只要是通过<jsp:include page="xxx.jsp" />
,嵌入进来的页面,每嵌入的一个页面,都会走一次指定的过滤器。
4、ERROR
假如web.xml里面配置了<error-page></error-page>
:
<error-page> <error-code>400</error-code> <location>/filter/error.jsp</location></error-page><error-page> <error-code>404</error-code> <location>/filter/error.jsp</location></error-page><error-page> <error-code>500</error-code> <location>/filter/error.jsp</location></error-page>
意思是HTTP请求响应的状态码只要是400、404、500三种状态码之一,容器就会将请求转发到error.jsp下,这就触发了一次error,走进了配置的DispatchFilter。需要注意的是注意一点的是,虽然把请求转发到error.jsp是一次forward的过程,但是配置成<dispatcher>FORWARD</dispatcher>
并不会走DispatchFilter这个过滤器。
这四种dispatcher方式可以单独使用,也可以组合使用,配置多个<dispatcher></dispatcher>
即可。
- filter中的dispatcher标签解析
- 两种include方式及filter中的dispatcher解析
- <filter-mapping>中的<dispatcher>元素
- Servlet中filter过滤<dispatcher>FORWARD</dispatcher>标签使用
- xml里filter-mapping中的dispatcher作用
- Filter,Dispatcher
- struts2 实现原理解析 此博文包含图片 (2010-07-27 14:49:36)转载▼ 标签: filter dispatcher threadlocal actionproxy 杂谈分
- web.xml里filter-mapping中的dispatcher的用途
- SSH web.xml里<filter-mapping>中的<dispatcher>意思
- web.xml里<filter-mapping>中的<dispatcher>作用
- web.xml里<filter-mapping>中的<dispatcher>作用
- web.xml里<filter-mapping>中的<dispatcher>作用
- web.xml里<filter-mapping>中的<dispatcher>作用
- web.xml里<filter-mapping>中的<dispatcher>作用
- web.xml里<filter-mapping>中的<dispatcher>作用
- web.xml里<filter-mapping>中的<dispatcher>作用
- web.xml里<filter-mapping>中的<dispatcher>作用
- 转载:web.xml里<filter-mapping>中的<dispatcher>作用
- 167. Two Sum II
- Ubuntu16.04 server下配置MySQL,并开启远程连接
- 014-java-005
- 应用的调试及adb命令的使用
- [PowerShell入门]选择结构和循环结构
- filter中的dispatcher标签解析
- <Eclipse>解决eclipse新建dynamic web project没有apache的Runtime environment问题
- 8.Flume Log4J Appender
- 55. Jump Game
- java中多线程安全问题产生&解决方案——同步方法
- sqlldr 导入txt文档
- 前端学习路线
- listview去除分割线方法
- 安卓自定义Toast