首先创建一个自定义类:EncodeFilter
接口使用Filter,在这里需要注意了,导包不要导入错了!
import javax.servlet.*;
使用注解可以省略配置web.xml文件
@WebFilter(urlPatterns = "/")这里的“/”表示过滤器拦截所有的servlet,当跳转过来的页面没有设置字符编码的时候,加上后再放行!
package org.news.filter;
import javax.servlet.*;
import javax.servlet.annotation.WebFilter;
import java.io.IOException;
/**
* @author k
*/
@WebFilter(urlPatterns = "/*")
public class EncodeFilter implements Filter {
private String encode="utf-8";//设置你想设置的字符编码
@Override
public void init(FilterConfig filterConfig) throws ServletException {
String encode=filterConfig.getInitParameter("encode");
if(this.encode==null){
//查找配置文件中预设的字符集编码
this.encode=encode;
}
}
/**
* 对所有页面设置字符集编码
* @param servletRequest
* @param servletResponse
* @param filterChain
* @throws IOException
* @throws ServletException
*/
@Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
if (null==servletRequest.getCharacterEncoding()||null==servletResponse.getCharacterEncoding()){
servletRequest.setCharacterEncoding(encode);
servletResponse.setCharacterEncoding(encode);
}
//设置字符编码之后放行
filterChain.doFilter(servletRequest,servletResponse);
}
@Override
public void destroy() {
encode=null;
}
}