Java基础——初识过滤器

来源:互联网 发布:双11淘宝和京东交易额 编辑:程序博客网 时间:2024/05/17 21:52

什么是过滤器?可以用过滤器做什么?

过滤:俺一定条件进行筛选,如果能满足条件就通过,否则就不通过。

web应用程序中过滤器是针对请求/响应的一个过滤器组件。

在服务器资源的外围。

作用可以针对请求/响应进行过滤,起到保护资源的目的。

主要用于:

1、使浏览器不缓存页面;

2、检测用户是否登录;

3、字符编码过滤器;

4、资源保护过滤器;

5、权限管理;

6、日志记录(时间,URL等信息)等。


创建一个Filter

实现javax.servlet.Filter接口。


Filter接口中有三个方法:

doFilter方法是过滤的方法!

public void doFilter(ServletRequest arg0,ServletResponse arg1,

              FilterChainarg2) throws IOException, ServletException

ServletRequest 请求隐式对象的父类。有时要强制类型转换

ServletResponse 响应隐式对象的父类。强制类型转换。

HttpServletRequestrequest = (HttpServletRequest)arg0;

HttpServletResponseresponse = (HttpServletResponse)arg1

FilterChain 过滤器链对象

doFilter(ServletRequest, ServletResponse);//放行。

Filter的配置

在web.xml文件中进行Filter的配置。

过滤器不能直接通过URL访问,Filter本身没有访问的名称。

配置是Filter保护资料的URL。


url-pattern的几种可用格式。

1、支持多映射,一个filter可以映射多个filter-mapping,只要filter-name一致。

2、/index.jsp  直接写明资源的URL

3、/*  所有资源

4、*.jsp    所有JSP资源

5、/goods/*     站点goods目录下的所有资源

6、/goods/*.jsp     错误。Filter不支持。

针对不同请求类型的过滤


过滤器链

当多个过滤器对一个资源进行保护时,当请求这个被保护的资源时就是会经过多个过滤器。这多个过滤器就会产生一个过滤器链。

考虑:当多个过滤器都保护时哪个先启动。

1 登录。

 2权限。

 3所有Servlet针对Post请求的中文处理。

过滤器的执行的先后顺序受web.xml中<filter-mapping>的前后顺序影响。先声明的先调用。

先调用的Filter后结束。filter的调用是以栈的方式。