您的位置:首页 > 其它

Servlet2.5 规范 学习笔记(续二)

2009-03-18 14:09 351 查看
对上篇文章做一下补充说明:多过滤器的执行顺序是按照web.xml文件里<filter-mapping>定义顺序执行的。例如定义三个过滤器
<filter>
<filter-name>filter1</filter-name>
<filter-class>com.jianglike.filter.FirstFileter</filter-class>
</filter>
<filter-mapping>
<filter-name>filter1</filter-name>
<url-pattern>/filter/*</url-pattern>
</filter-mapping>

<filter>
<filter-name>filter2</filter-name>
<filter-class>com.jianglike.filter.SecondFileter</filter-class>
</filter>
<filter-mapping>
<filter-name>filter2</filter-name>
<url-pattern>/filter/*</url-pattern>
</filter-mapping>
<filter>
<filter-name>filter3</filter-name>
<filter-class>com.jianglike.filter.ThreeFileter</filter-class>
</filter>
<filter-mapping>
<filter-name>filter3</filter-name>
<url-pattern>/filter/*</url-pattern>
</filter-mapping>
那么如果你调用/filter/*请求时候通过过滤器的顺序为filter1-》filter2-》filter3

1.1.2FilterChain接口描述

该接口由容器实现,里面包含了该请求相关过滤器。使用该接口的doFilter(ServletRequestrequest,ServletResponseresponse)方法可以调用下一个过滤器或者目标资源,容器将该接口的实例作为参数传入过滤器(Filter)对象的doFilter()方法中。

1.1.3FilterConfig接口描述

容器初始化过滤器的时,将web.xml中的过滤器初始化参数信息传递给过滤器。使用FilterChain的getFilterName()方法获取过滤器名,getServletContext()用于获取ServletContext对象,getInitParameter(Stringname)获取指定参数名的参数值,类型为字符串,getInitParameterNames()方法获取所有的参数信息,返回类型为字符串类型的枚举

1.1.4
RequestDispatcher接口描述

接受客户端的请求并将该请求发送到WEB服务的其他资源上(如servlet,静态网页,或者JSP文件),可以通过ServletContext的getRequestDispatcher(java.lang.Stringpath)方法获取接口的实现。该接口包含两个方法:

1、forward(ServletRequestrequest,ServletResponseresponse)和
2、include(ServletRequestrequest,ServletResponseresponse)。
调用forwar()方法的需要注意:在HTTP回应给内容给客户端的以前才能调用forward()方法,否则将拋出IllegalStateException异常。因为存放在HttpResponse对象中的内容将会在调用forward()方法之前自动被清除。
include()方法与forward()方法非常类似,惟一的不同在于:利用include()方法将HTTP请求转送给其他Servlet后,被调用的Servlet虽然可以处理这个HTTP请求,但是最后的主导权仍然是在原来的Servlet。换言之,被调用的Servlet如果产生任何HTTP回应,将会并入原来的HttpResponse对象。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: