一、核心java文件
package top.youshang520i.www.util;
import java.io.IOException;
import java.util.Map;
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.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* 字符编码过滤器
* @author Administrator
*
*/
public class FieterCoding implements Filter{
private String encoding = "UTF-8";
/**
* 销毁
*/
public void destroy() {
// TODO Auto-generated method stub
System.out.println("已销毁....");
}
/**
* 过滤器
*/
public void doFilter(ServletRequest arg0, ServletResponse arg1, FilterChain arg2)
throws IOException, ServletException {
// TODO Auto-generated method stub
//进行降级
HttpServletRequest request = (HttpServletRequest)arg0;
HttpServletResponse response = (HttpServletResponse)arg1;
//设置请求与回应的字符编码格式
response.setCharacterEncoding(encoding);
response.setContentType("html/text;charset="+encoding+"");
//判断请求的提交方式是否是post提交方式
if(request.getMethod().equalsIgnoreCase("post")) {
//如果是post提交方式,设置编码格式为encoding(UTF-8)
request.setCharacterEncoding(encoding);
}else {//否则(get)
for (Map.Entry<String, String[]> map : request.getParameterMap().entrySet()) {
String[] value = map.getValue();
for (int i = 0; i < value.length; i++) {
value[i] = new String(value[i].getBytes("ISO-8859-1"), encoding);
}
}
}
arg2.doFilter(arg0, arg1);
}
/**
* 初始化(想要设置字符编码需要配置init,变量设置为:encoding)
*/
public void init(FilterConfig arg0) throws ServletException {
// TODO Auto-generated method stub
//获取到初始化的参数名为(encoding)
String enco = arg0.getInitParameter("encoding");
//判断是否为空,不为空就将它的字符编码设置为encoding的字符编码
if(enco != null && !enco.trim().equals("")) {
encoding = enco;
}
}
}
2.配置xml文件
<!--过滤器 start -->
<filter>
<filter-name>EncodingFilter</filter-name>
<filter-class>top.youshang520i.www.util.FieterCoding</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>
<!--过滤器 end -->