常用过滤器 (Filter)

来源:互联网 发布:江西网络广播电视台app 编辑:程序博客网 时间:2024/05/23 12:38

常用过滤器 (Filter)

编码过滤器

解决post请求乱码,和响应乱码

  1. 配置web.xml
<?xml version="1.0" encoding="UTF-8"?><web-app>    <!-- 过滤器 -->    <filter>        <filter-name>encodingFilter</filter-name> <!-- 设置过滤器名称 以便mapping匹配过滤器 -->        <filter-class>com.etc.filter.EncodingFilter</filter-class><!-- 过滤器实现类 -->        <init-param><!-- 初始化参数 可以在FilterConfig中读取该参数 -->            <param-name>encoding</param-name>            <param-value>utf-8</param-value>        </init-param>    </filter>    <!-- 过滤器匹配条件 -->    <filter-mapping>        <filter-name>encodingFilter</filter-name>        <url-pattern>/*</url-pattern>    </filter-mapping></web-app>

2.EncodingFilter类

package com.etc.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;public class EncodingFilter implements Filter {    private String encoding = "UTF-8";    public void destroy() {    }    public void doFilter(ServletRequest request, ServletResponse response,            FilterChain chain) throws IOException, ServletException {        //设置编码        request.setCharacterEncoding(encoding);        response.setCharacterEncoding(encoding);        chain.doFilter(request, response);    }    public void init(FilterConfig config) throws ServletException {        //初始化参数        String encoding = config.getInitParameter("encoding");        if (encoding != null) {            this.encoding = encoding;        }    }}

日志过滤器

记录用户访问日志

  1. 配置web.xml
<?xml version="1.0" encoding="UTF-8"?><web-app>    <!-- 过滤器 -->    <filter>        <filter-name>logFilter</filter-name> <!-- 设置过滤器名称 以便mapping匹配过滤器 -->        <filter-class>com.etc.filter.LogFilter</filter-class><!-- 过滤器实现类 -->            </filter>    <!-- 过滤器匹配条件 -->    <filter-mapping>        <filter-name>logFilter</filter-name>        <url-pattern>/*</url-pattern>    </filter-mapping></web-app>

2.LogFilter类

package com.etc.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;public class LogFilter implements Filter {    public void destroy() {    }    public void doFilter(ServletRequest request, ServletResponse response,            FilterChain chain) throws IOException, ServletException {        //转换为http相关类        HttpServletRequest req = (HttpServletRequest) request;        HttpServletResponse resp = (HttpServletResponse) response;        //打印访问日志,开始        System.out.println("" + System.currentTimeMillis() + ",start," + req.getRemoteHost()                + "," + req.getRequestURI());        chain.doFilter(request, response);        //打印访问日志,结束        System.out.println("" + System.currentTimeMillis() + ",end  ," + req.getRemoteHost()                + "," + req.getRequestURI());        chain.doFilter(request, response);    }    public void init(FilterConfig config) throws ServletException {        //初始化参数    }}
0 0
原创粉丝点击