Servlet 过滤器
是一种切面AOP(面向切面编程)技术, 可以拦截 请求 和 响应
可以在 请求前 处理某些内容, 可以在 响应后 处理某些内容
字符集编码过滤器
public class CharacterEncodingFilter implements Filter {
private String encoding = "UTF-8" ;
@Override
public void init(FilterConfig filterConfig) throws ServletException {
String encoding = filterConfig.getInitParameter("encoding");
if (encoding !=null) {
this.encoding = encoding ;
}
}
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
// 在 请求前 设置 字符集编码为 UTF-8
request.setCharacterEncoding(encoding);
// 设置响应的字符集编码为 UTF-8
response.setCharacterEncoding(encoding);
// 将请求 交给 下一个链 继续执行
chain.doFilter(request, response);
// 在 响应 后 执行的代码 编写在 这
}
}
使用方式
- 基于注解
@WebFilter(value = "/*", initParams = {@WebInitParam(name="encoding", value = "UTF-8")})
- 基于XML
<!-- 配置字符集编码过滤器 -->
<filter>
<filter-name>encodingFilter</filter-name>
<filter-class>com.qikux.filter.CharacterEncodingFilter</filter-class>
<init-param>
<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>
ter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>