Servlet_2_过滤器

使用过滤器,可以对请求数据进行处理后再交给servlet,也可以对servlet的响应数据进行处理后再交给浏览器。

 

 


一、基本知识

生命周期:

  与服务器共存亡。

使用步骤:

  1、编写过滤器类:实现 Filter 接口,重写 doFilter 方法,在方法内进行过滤操作。注意:不能在重写的方法内调用   父类的此方法,否则服务器会报错。

  2、在web.xml中配置此过滤器的生效范围。


二、编写过滤器类

例子:

  实现了在访问servlet之前先统一编码格式。

public class MainFilter implements Filter {


    @Override
    public void init(FilterConfig filterConfig) throws ServletException {
        //服务器启动的时候执行
        System.out.println("服务器启动咯,过滤器开始工作!");
    }
    
    @Override
    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
        //对请求数据做处理,统一编码格式
        servletRequest.setCharacterEncoding("utf-8");
        servletResponse.setContentType("text/html;charset=utf-8");

        System.out.println("啊,进行了一次过滤请求,好充实啊");
        //放行,让它去找它的servlet服务处理
        filterChain.doFilter(servletRequest,servletResponse);
        
        //对响应数据做处理
        System.out.println("啊,进行了一次过滤响应,好充实啊");
        
    }

    @Override
    public void destroy() {
        //服务器关闭的时候执行
        System.out.println("服务器寄了,我也.....");
    }
}

 


三、web.xml中配置

例子:

  实现了过滤对所有servlet的请求。

    <!--配置过滤器-->
    <filter>
        <filter-name>MainFilter</filter-name>
        <filter-class>com.lurenjia.filter.MainFilter</filter-class>
    </filter>
    <filter-mapping>
        <filter-name>MainFilter</filter-name>
        <!--生效的servlet:
                全局:*
                局部:*.do (表示以 .do 结尾的servlet)
                指定:具体的servlet别名-->
        <url-pattern>/*</url-pattern>
    </filter-mapping>

 

posted @ 2023-02-13 17:15  在博客做笔记的路人甲  阅读(19)  评论(0编辑  收藏  举报