常用过滤器 (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 {
//初始化参数
}
}