servlet-过滤器

<filter>
        <filter-name>filter</filter-name>
        <filter-class>com.study.filter.FilterTest</filter-class>
    </filter>
    <filter-mapping>
        <filter-name>filter</filter-name>
        <url-pattern>/*</url-pattern><!-- 对所有servlet进行拦截 -->
    </filter-mapping>
    
    <filter>
        <filter-name>filter2</filter-name>
        <filter-class>com.study.filter.FilterTest2</filter-class>
    </filter>
    <filter-mapping>
        <filter-name>filter2</filter-name>
        <url-pattern>*.do</url-pattern><!-- 针对别名为*.do结尾的servlet进行拦截 -->
    </filter-mapping>
    
    <filter>
        <filter-name>filter3</filter-name>
        <filter-class>com.study.filter.FilterTest3</filter-class>
    </filter>
    <filter-mapping>
        <filter-name>filter3</filter-name>
        <url-pattern>/servlet.do</url-pattern><!-- 针对别名为servlet.do的servlet进行拦截 -->
    </filter-mapping>

注意:/*表示对所有servlet请求进行拦截;
   *.do表示对别名为.do的servlet请求进行拦截,不要加“/”,会报错
   /servlet.do表示针对单个别名为servlet.do的servlet.do请求进行拦截
生命周期:服务器启动到关闭
作用:
  1.统一编码管理;
  2.session管理
  3.图片水印,和谐词汇
  4.权限管理等

public class FilterTest implements Filter{

    @Override
    public void destroy() {
        System.out.println("destroy!1");
    }

    @Override
    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
            throws IOException, ServletException {
        request.setCharacterEncoding("utf-8");
        response.setContentType("text/html;charset=utf-8");
        HttpSession session=((HttpServletRequest)request).getSession();
        //使用方法:设置编码格式,判断session是否失效
        if(session.getAttribute("uname")==null) {
            //如果session失效,则重新登陆
            ((HttpServletResponse)response).sendRedirect("/studyWeb/aJax.jsp");
        }else {
            //通过。执行用户请求的servlet
            chain.doFilter(request, response);//
        }
        //执行完用户请求的servlet后,回来继续执行以下代码 
        System.out.println("完成!!");
    }
    @Override
    public void init(FilterConfig arg0) throws ServletException {
        System.out.println("init");
    }
}