标签:zip 表示 java 不同 char 首部 实现 monit 顺序
保存filterConfig对象
的一个引用,以备过滤去以后使用.
其次调用 doFIlter 能够保存username记录到一个文件里,压缩响应输出。
最后destroy删除一个过滤器实例,
FilterChain的doFIlter 方法要负责明白接下来调用谁的doFilter放大,假设到达链尾,则要确定调用哪个servlet的service方法。
在配置文件里确定过滤器的顺序
在配置文件里做三件事
1.声明过滤器
2.将过滤器映射到你想过滤的web资源
3,组织这些映射,创建过滤器调用序列
声明过滤器
<filter>
<filter-name>BeerRequest</filter-name>
<filter-class>com.gac.test.BeerRequestFilter</filter-class>
<init-param>
<param-name>LogFileName</param-name>
<param-value>UserLog.txt</param-value>
</init-param>
</filter>
声明url模式的过滤器映射
<filter-mapping>
<filter-name>BeerRequest</filter-name>
<url-pattern>*.do</url-pattern>
</filter-mapping>
声明相应servlet名的过滤器映射
<filter-mapping>
<filter-name>BeerRequest</filter-name>
<servlet-name>AdviceServlet</servlet-name>
</filter-mapping>
为通过请求分派请求的web资源声明一个过滤器映射
<filter-mapping>
<filter-name>MonitorFilter</filter-name>
<url-pattern>*.do</url-pattern>
<dispatcher>REQUEST</dispatcher>
和/或
<dispatcher>INCLUDE</dispatcher>
和/或
<dispatcher>FORWARD</dispatcher>
和/或
<dispatcher>ERRO</dispatcher>
</filter-mapping>
声明规则:
必需要有filter-name
必需要有url-pattern或servlet-name元素当中之中的一个
能够有0-4个dispatcher
Request值表示对client请求启用过滤器,假设没有指定<dispatcher>元素。则默觉得
Rquest
INCLUDE值表示对由一个include()调用分派来的请求启用过滤器
FORWARD值表示对一个由forward()调用分派来的请求启用过滤器
ERROR值表示对错误处理调用资源启用过滤器
过滤器请求路径样例
<filter-mapping>
<filter-name>Filter1</filter-name>
<url-pattern>/Recipes/*<url-pattern> /Recipes/HopsReport.do 过滤器序列 1 5
</filter-mapping> /Recipes/HopsList.do 过滤器 15 2
<filter-mapping>
<filter-name>Filter2</filter-name> /Recipes/Modify/ModRecipes.do 过滤器 1 5 4
<url-pattern>/Recipes/HopsList.do<url-pattern> /HopsList.do 过滤器 5
</filter-mapping>
<filter-mapping> /Recipes/Add/AddRecipes.do 过滤器 1 3 5
<filter-name>Filter3</filter-name>
<url-pattern>/Recipes/Add/*<url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>Filter4</filter-name>
<url-pattern>/Recipes/Modify/ModRecipes.do<url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>Filter5</filter-name>
<url-pattern>/*<url-pattern>
</filter-mapping>
/**************************************************************/
//过滤器必须实现Filter接口
public class BeerRequestFilter implements Filter{
private FilterConfig fc;
//完毕清理工作
@Override
public void destroy() {
// TODO Auto-generated method stub
}
//详细的业务逻辑
@Override
public void doFilter(ServletRequest req, ServletResponse resp,
FilterChain chain) throws IOException, ServletException {
// TODO Auto-generated method stub
HttpServletRequest httpReq = (HttpServletRequest) req;//能够将请求和响应对象强制转换为Http类型
String name = httpReq.getRemoteUser();
if(name != null){
fc.getServletContext().log("User"+name +"is updating");
}
chain.doFilter(req, resp);//接下来要调用的过滤器或者servlet
}
//必须实现init 通常只在当中保存配置config对象
@Override
public void init(FilterConfig config) throws ServletException {
// TODO Auto-generated method stub
this.fc = config;
}
}
/***************************************************************/
标签:zip 表示 java 不同 char 首部 实现 monit 顺序
原文地址:http://www.cnblogs.com/clnchanpin/p/6852725.html