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
doFilter(ServletRequestrequest,ServletResponseresponse)方法可以调用下一个过滤器或者目标资源,容器将该接口的实例作为参数传入过滤器(Filter)对象的doFilter()方法中。
接受客户端的请求并将该请求发送到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对象。
<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接口描述
该接口由容器实现,里面包含了该请求相关过滤器。使用该接口的1.1.3FilterConfig接口描述
容器初始化过滤器的时,将web.xml中的过滤器初始化参数信息传递给过滤器。使用FilterChain的getFilterName()方法获取过滤器名,getServletContext()用于获取ServletContext对象,getInitParameter(Stringname)获取指定参数名的参数值,类型为字符串,getInitParameterNames()方法获取所有的参数信息,返回类型为字符串类型的枚举1.1.4
RequestDispatcher接口描述
接受客户端的请求并将该请求发送到WEB服务的其他资源上(如servlet,静态网页,或者JSP文件),可以通过ServletContext的1、forward(
2、include(
调用forwar()方法的需要注意:在HTTP回应给内容给客户端的以前才能调用forward()方法,否则将拋出IllegalStateException异常。因为存放在HttpResponse对象中的内容将会在调用forward()方法之前自动被清除。
include()方法与forward()方法非常类似,惟一的不同在于:利用include()方法将HTTP请求转送给其他Servlet后,被调用的Servlet虽然可以处理这个HTTP请求,但是最后的主导权仍然是在原来的Servlet。换言之,被调用的Servlet如果产生任何HTTP回应,将会并入原来的HttpResponse对象。
相关文章推荐
- Servlet2.5 规范 学习笔记(续一)
- ArcIMS学习之 HTML Viewer定制笔记 续二(2.Servlet与请求响应过程)
- 网上图书商城项目学习笔记-037工具类之BaseServlet及统一中文编码
- JSP/Servlet Web 学习笔记 DayThree —— 实现一个登陆小界面
- hibernate学习笔记之中的一个(JDBC回想-ORM规范)
- Servlet学习笔记—继承HttpServlet类(创建Servlet的第二种方法)
- [学习笔记]Java SE环境搭建及代码规范
- JSP&Servlet学习笔记(一)
- 学习笔记--javaWeb-servlet学习1
- Spring2.5注解(标注)学习笔记
- JavaWeb学习笔记—Servlet
- XML学习笔记(二):XML规范:DTD详解
- JSP/Servlet Web 学习笔记 DayFour
- [原创]java WEB学习笔记09:ServletResponse & HttpServletResponse
- servlet学习笔记
- Servlet 规范笔记—基于http协议的servlet
- 韩顺平servlet学习笔记02-session以及连接数据库
- servlet学习笔记1——用户登录网站(servlet1.0)
- JavaWeb学习笔记--Servlet代码集
- Servlet学习笔记_Servlet