鲁春利的工做笔记,好记性不如烂笔头java
Filter接口web
Filter也称之为过滤器,经过Filter对全部web资源(例如Jsp, Servlet, 静态文件等)进行拦截,从而实现一些特殊的功能。例如实现URL级别的权限访问控制、过滤敏感词汇、压缩响应信息等。设计模式
package javax.servlet; /** * A filter is an object that performs filtering tasks on either the * request to a resource (a servlet or static content), or on the response * from a resource, or both. * * @since Servlet 2.3 */ public interface Filter { public void init(FilterConfig filterConfig) throws ServletException; public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException; public void destroy(); }
Filter的建立和销毁由WEB服务器负责。 web 应用程序启动时,web 服务器将建立Filter的实例对象,并调用其init方法,完成对象的初始化功能,从而为后续的用户请求做好拦截的准备工做,filter对象只会建立一次,init方法也只会执行一次。经过init方法的参数,可得到表明当前filter配置信息的FilterConfig对象。服务器
FilterConfig接口app
用户在配置filter时,能够使用<init-param>为filter配置一些初始化参数,当web容器实例化Filter对象,调用其init方法时,会把封装了filter初始化参数的filterConfig对象传递进来。所以开发人员在编写filter时,经过filterConfig对象的方法,就可得到:
ide
String getFilterName():获得filter的名称。
String getInitParameter(String name): 返回在部署描述中指定名称的初始化参数的值。若是不存在返回null.
Enumeration getInitParameterNames():返回过滤器的全部初始化参数的名字的枚举集合。
public ServletContext getServletContext():返回Servlet上下文对象的引用。spa
package com.invicme.apps.shiro.filter; import java.io.IOException; import javax.servlet.Filter; import javax.servlet.FilterChain; import javax.servlet.FilterConfig; import javax.servlet.ServletException; import javax.servlet.ServletRequest; import javax.servlet.ServletResponse; import javax.servlet.annotation.WebFilter; /** * @author lucl */ @WebFilter("/*") public class MyFilter implements Filter { public MyFilter() { System.out.println("MyFilter......"); } public void init(FilterConfig fConfig) throws ServletException { System.out.println("MyFilter init......"); } public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { System.out.println("MyFilter doFilter......"); chain.doFilter(request, response); } public void destroy() { System.out.println("MyFilter destroy......"); } }
Decorator设计模式设计