- 什么是过滤器
Filter也称之为过滤器,它是Servlet技术中最实用的技术,Web开发人员通过Filter技术,对web服务器管理的所有web资源:例如Jsp, Servlet, 静态图片文件或静态 html 文件等进行拦截,从而实现一些特殊的功能。例如实现URL级别的权限访问控制、过滤敏感词汇、压缩响应信息等一些高级功能。
它主要用于对用户请求进行预处理,也可以对HttpServletResponse进行后处理。使用Filter的完整流程:Filter对用户请求进行预处理,接着将请求交给Servlet进行处理并生成响应,最后Filter再对服务器响应进行后处理。 - 过滤器实现功能
(1)在HttpServletRequest到达 Servlet 之前,拦截客户的HttpServletRequest 。根据需要检查HttpServletRequest,也可以修改HttpServletRequest 头和数据。
(2)在HttpServletResponse到达客户端之前,拦截HttpServletResponse 。根据需要检查HttpServletResponse,也可以修改HttpServletResponse头和数据。
(3)Filter接口中有一个doFilter方法,当开发人员编写好Filter,并配置对哪个web资源进行拦截后,Web服务器每次在调用web资源的service方法之前,都会先调用一下filter的doFilter方法,doFilter方法中有一个filterChain对象,用于继续传递给下一个filter,在传递之前我们可以定义过滤请求的功能,在传递之后,我们可以定义过滤响应的功能 - 过滤器的生命周期
(1)Filter初始化@Override public void init(FilterConfig filterConfig) throws ServletException { }
(2)执行过滤的方法
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException { // 过滤请求 System.out.println("MyFiter1在请求到达servlet之前的代码处理"); // 传递过滤器 filterChain.doFilter(servletRequest,servletResponse); // 过滤响应 System.out.println("myFilter1在响应回到浏览器之前的代码处理"); }
在这个方法中,可以通过filterChain.doFilter方法控制请求是否继续向后传递。
同样,在这个方法里面可以使用HttpRequest处理请求,使用HttpResponse作出响应。
(3)销毁过滤器 -
@Override public void destroy() { System.out.println("销毁过滤器"); }
- 在web.xml文件中配置Filter
<!--配置filter--> <filter> <filter-name>myfilter1</filter-name> <filter-class>com.bjsxt.filter.MyFilter1</filter-class> </filter> <filter-mapping> <filter-name>myfilter1</filter-name> <url-pattern>/mycontroller1</url-pattern> </filter-mapping>
Filter过滤器的理解(一)
最新推荐文章于 2023-04-19 10:58:10 发布