过滤器基础(字符集过滤器和防盗链过滤器)

package com.neuedu.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;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * 过滤器
 *  Filter也是一个java类,但是不是所有的java类都是过滤器
 *  规范:
 *      1.实现   javax.servlet   Filter 接口
 *      2.实现三个方法
 *          - init();(初始化-不是必要的)
 *          - doFilter();(执行过滤器 - 必要的)
 *          - destroy();(销毁-不是必要的)
 * 
 *  使用:
 *   - 2.0版本 
 *      
 *      
 *          
 *          CharacterEncodingFilter
 *          
 *          com.neuedu.filter.CharacterEncodingFilter
 *      
 *      
 *      
 *          
 *          CharacterEncodingFilter
 *          
 *          /*
 *      
 *
 *  - 3.0版本 
 *      使用注解:@WebFilter("/*")
 *           注意:拦截多个@WebFilter({"/a","/b"},....)
 *          
 *  
 *  
 * 字符集过滤器
 * 
 *  思路:
 * 
 *      1、创建一个字符集过滤器
 * 
 *      2、实现过滤器(写代码顺序  放行,强转,设置字符集)
 *          - 强转
 *              ServletRequest   -》HttpServletRequest
 *              ServletResponse   -》HttpServletResponse
 * 
 *          - 设置字符集
 *              request.setCharacterEncoding("utf-8");
 *              response.setCharacterEncoding("utf-8");
 *          - 放行 doFilter(request,response);
 *  
 * 
 *  防盗链过滤器
 *      明确:需要拦截目标
 *  
 *      - 强转
 *              ServletRequest   -》HttpServletRequest
 *              ServletResponse   -》HttpServletResponse
 *      - 设置拦截目标
 *          利用Session(一个思路)
 * 
 *      - 放行 doFilter(request,response);
 * 
 * @author Administrator
 *
 */

@WebFilter("/*")
public class CharacterEncodingFilter implements Filter {
    @Override
    public void init(FilterConfig filterConfig) throws ServletException {
        System.out.println("过滤器初始化。。。。。");
    }

    @Override
    public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain)
            throws IOException, ServletException {
        //请求和响应进行强转
        HttpServletRequest request = (HttpServletRequest)req;
        HttpServletResponse response = (HttpServletResponse)resp;
        System.out.println("过滤器执行。。。。。");
        //设置字符集
        request.setCharacterEncoding("utf-8");
        response.setCharacterEncoding("utf-8");
        //放行
        chain.doFilter(request, response);
         
    }
    
    @Override
    public void destroy() {
        System.out.println("过滤器销毁。。。。。");
    }

}

你可能感兴趣的:(过滤器基础(字符集过滤器和防盗链过滤器))