package com.rlovep.filiter; import java.io.IOException; import java.util.Enumeration; import javax.servlet.DispatcherType; 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; import javax.servlet.annotation.WebInitParam; /** * 过滤器必须实现Filter接口 * */ /** * * @ClassName: HelloFiliter * @Description: 监听器实现 * @author peace w_peace@163.com * @date 18 Nov 2015 3:31:39 pm * */ /* * @WebFilter(urlPatterns="/*") * urlPatterns="/*"过滤所有路径 * 参考servlet * dispatcherTypes=DispatcherType.FORWARD触发过滤器的时机为转发。该值如果不写,时机为REQUEST * initParams={@WebInitParam(name="encoding",value="utf-8"), @WebInitParam(name="driver",value="msql"配置参数。 */ @WebFilter(urlPatterns="/*",dispatcherTypes=DispatcherType.FORWARD, initParams={@WebInitParam(name="encoding",value="utf-8"), @WebInitParam(name="driver",value="msql")} ) public class HelloFiliter implements Filter { /** * Default constructor. */ public HelloFiliter() { System.out.println("filter构造"); } public void init(FilterConfig fConfig) throws ServletException { System.out.println("filter初始化"); //通过fConfig获得参数 FilterConfig filterConfig=fConfig; String encoding=filterConfig.getInitParameter("encoding"); //或者通过迭代获得 Enumeration<String> names = filterConfig.getInitParameterNames(); while (names.hasMoreElements()) { String string = (String) names.nextElement(); String value=filterConfig.getInitParameter(string); System.out.println(string+"="+value); } } public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { System.out.println("对请求执行过滤"); // 放行 (去到service) // 如果有下一个过滤器,进入下一个过滤器,否则就执行访问service chain.doFilter(request, response); System.out.println("对响应进行过滤"); } public void destroy() { System.out.println("filter消灭"); } }