filter 过滤器
和名字一样,功能就是在执行其他功能之前,会执行这个
过滤器,
可以先执行这个过滤器的功能,
只要是客服端想服务端发送的都会被过滤
过滤器的过滤范围,
通过配置web.xml文档来表示
<filtener>
<filtener-name>/myfiltener <filtener-name>
<filtener-class>filtener的class全路径<filtener-class>
</filtener>
<filtener-mapping>
<filtener-name>/myfiltener <filtener-name>
<utl-pattern>
这里配置的路径就是过滤的范围
/* 这里表示通配符,就是所有的范围,都回经过这个过滤器
/myfiltener.jsp 这里表示范围这个myfiltener文件的时候,才会执行这个过滤器 //完全目录匹配
*.do 这里表示访问文件后缀名是.do的才会执行这个过滤器 //后缀名匹配
<utl-pattern>
</filtener-mapping>
<filtener-mapping>
<filtener-name>/myfiltener <filtener-name>
//上面的url-parten是用来过滤路径请求
<servlet-name>servlet</serlvet-name>
//这是用来过滤serlvet请求的
//
<dispatcher>
forward //这个值的转发的的意思,
表示这个filtener就是拦截转发,
如果是访问<utl-pattern>/* 的路径配置,
如果页面有转发过来的,就进行执行拦截,如果没有就不会执行
request//默认值 意思是拦截 请求
include 拦截包含
error 拦截错误页面
</dispatcher>
</filtener-mapping>
public void destroy() {
服务器关闭的时候,执行销毁方法
}
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
//这里执行要过滤的动作,
//自己定义
//请求一次,执行一次,
//这里表示过滤执行完毕,放行,到下一个过滤器链的过滤器,如果没有过滤器了,就会原来访问那里就访问那里
System.out.println("进入过滤器");
chain.doFilter(request, response);
System.out.println("从服务器返回,");
//这后面的代码是,服务器处理完毕后会原路返回,
这里就相当于 然后会的地方,如果有代码,会被执行
}
public void init(FilterConfig fConfig) throws ServletException {
服务器启动的时候就会创建这个filtener对象,并执行这个初始化方法
}
过滤器链执行顺序,和web.xml配置文件。里面配置的
<filtener-mapping>
的顺序有关,
也就是说
chain.fofiltener方行,是方形到下一个wen.xml的过滤器的配置文件路径
如果形成过滤器连,一个过滤器没有放行,dofilter,就表示过滤器没有下一个,
就会原路返回,不会到到服务器,不会获取请求的东西,会原路返回,
|
|