您的位置:首页 > 其它

常用过滤器 (Filter)

2016-01-06 10:58 399 查看

常用过滤器 (Filter)

编码过滤器

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

配置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;
}
}
}


日志过滤器

记录用户访问日志

配置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 {
//初始化参数
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: