java 代码
- 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;
- import javax.servlet.http.HttpServletResponse;
- public class EncodingAndCacheflush implements Filter{
- private FilterConfig config ;
- public void destroy() {
- }
- public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
- String encoding = config.getInitParameter("encoding");//从配置文件从读取编码格式
- request.setCharacterEncoding(encoding);//设置编码
- ((HttpServletResponse)response).setHeader("Pragma","No-cache");
- ((HttpServletResponse)response).setHeader("Cache-Control","no-cache");
- ((HttpServletResponse)response).setHeader("Expires","0");//禁止缓存
- chain.doFilter(request, response);
- }
- public void init(FilterConfig config) throws ServletException {
- this.config = config;
- }
- }
在web.xml中加入Filter的配置,如下:
xml 代码
- <filter>
- <filter-name>EncodingAndCacheflush</filter-name>
- <filter-class>EncodingAndCacheflush</filter-class>
- <init-param>
- <param-name>encoding</param-name>
- <param-value>UTF-8</param-value>
- </init-param>
- </filter>
- <filter-mapping>
- <filter-name>EncodingAndCacheflush</filter-name>
- <url-pattern>/*</url-pattern>
- </filter-mapping>
还有几点需要注意的是:
要传递参数的时候最好使用form进行传参,如果使用链接的话当中文字符的时候过滤器转码是不会起作用的,还有就是页面上
form的method也要设置为post,不然过滤器也起不了作用。
然后在页面中设置编码为UTF-8这样就不必第次都进行转码了。