<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>整个 on 庞玉栋个人博客</title><link>https://pangyd.com/tags/%E6%95%B4%E4%B8%AA/</link><description>Recent content in 整个 on 庞玉栋个人博客</description><generator>Hugo</generator><language>zh-cn</language><lastBuildDate>Fri, 22 Sep 2017 20:08:06 +0800</lastBuildDate><atom:link href="https://pangyd.com/tags/%E6%95%B4%E4%B8%AA/index.xml" rel="self" type="application/rss+xml"/><item><title>Java-Filter过滤器用于过滤整个项目的编码</title><link>https://pangyd.com/post/110-java-filter/</link><pubDate>Fri, 22 Sep 2017 20:00:54 +0800</pubDate><guid>https://pangyd.com/post/110-java-filter/</guid><description>&lt;p>整个分为实现类以及&lt;span>在web.xml文件中对编写的filter类进行&lt;a target="_self" href="https://pangyd.com/">注册&lt;/a>&lt;/span>&lt;/p>&lt;p>&lt;span>&lt;/span>&lt;/p>&lt;pre lay-lang="Java" class="layui-code" skin="notepad">package cn.itcast.itcaststore.web.filter;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
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.HttpServletRequestWrapper;
/**
 * 编码过滤器（用于统一项目编码）
 */
public class EncodingFilter implements Filter {
	public void init(FilterConfig filterConfig) throws ServletException {
&lt;pre>&lt;code>}
public void doFilter(ServletRequest request, ServletResponse response,
		FilterChain chain) throws IOException, ServletException {
	// 处理请求乱码
	HttpServletRequest httpServletRequest = (HttpServletRequest) request;
	HttpServletRequest myRequest = new MyRequest(httpServletRequest);
	// 处理响应乱码
	response.setContentType(&amp;quot;text/html;charset=utf-8&amp;quot;);
	chain.doFilter(myRequest, response);
}
public void destroy() {

}
&lt;/code>&lt;/pre>
&lt;p>}
// 自定义request对象
class MyRequest extends HttpServletRequestWrapper {
private HttpServletRequest request;
private boolean hasEncode;
public MyRequest(HttpServletRequest request) {
super(request);// super必须写
this.request = request;
}
// 对需要增强方法 进行覆盖
@SuppressWarnings({ &amp;ldquo;unchecked&amp;rdquo;, &amp;ldquo;rawtypes&amp;rdquo; })
@Override
public Map getParameterMap() {
// 先获得请求方式
String method = request.getMethod();
if (method.equalsIgnoreCase(&amp;ldquo;post&amp;rdquo;)) {
// post请求
try {
// 处理post乱码
request.setCharacterEncoding(&amp;ldquo;utf-8&amp;rdquo;);
return request.getParameterMap();
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
} else if (method.equalsIgnoreCase(&amp;ldquo;get&amp;rdquo;)) {
// get请求
Map&amp;lt;string, string[]=&amp;quot;&amp;quot;&amp;gt; parameterMap = request.getParameterMap();
if (!hasEncode) { // 确保get手动编码逻辑只运行一次
for (String parameterName : parameterMap.keySet()) {
String[] values = parameterMap.get(parameterName);
if (values != null) {
for (int i = 0; i &amp;lt; values.length; i++) {
try {
values[i] = new String(values[i].getBytes(&amp;ldquo;ISO-8859-1&amp;rdquo;),&amp;ldquo;utf-8&amp;rdquo;);
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
}
}
}
hasEncode = true;
}
return parameterMap;
}
return super.getParameterMap();
}
@Override
public String getParameter(String name) {
@SuppressWarnings(&amp;ldquo;unchecked&amp;rdquo;)
Map&amp;lt;string, string[]=&amp;quot;&amp;quot;&amp;gt; parameterMap = getParameterMap();
String[] values = parameterMap.get(name);
if (values == null) {
return null;
}
return values[0]; // 取回参数的第一个值
}
@Override
public String[] getParameterValues(String name) {
@SuppressWarnings(&amp;ldquo;unchecked&amp;rdquo;)
Map&amp;lt;string, string[]=&amp;quot;&amp;quot;&amp;gt; parameterMap = getParameterMap();
String[] values = parameterMap.get(name);
return values;
}
}
&amp;lt;/string,&amp;gt;&amp;lt;/string,&amp;gt;&amp;lt;/string,&amp;gt;&lt;/pre>&lt;p>&lt;span>&lt;a target="_self" href="https://pangyd.com/">web.xml配置&lt;/a>&lt;/span>&lt;/p></description></item></channel></rss>