过滤器解决乱码问题
来源:互联网 发布:淘宝知己知彼 编辑:程序博客网 时间:2024/05/09 01:08
package cn.itcast.estore.web.filter;import java.io.IOException;import java.io.UnsupportedEncodingException;import java.util.Map;import java.util.Set;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;/** * 解决乱码通用的过滤器程序 * * @author seawind */public class EncodingFilter implements Filter {@Overridepublic void destroy() {}@Overridepublic void doFilter(ServletRequest request, ServletResponse response,FilterChain chain) throws IOException, ServletException {// 解决postrequest.setCharacterEncoding("utf-8");// 解决getEncodingRequest encodingRequest = new EncodingRequest((HttpServletRequest) request);// 解决响应response.setContentType("text/html;charset=utf-8");chain.doFilter(encodingRequest, response);}@Overridepublic void init(FilterConfig filterConfig) throws ServletException {}}class EncodingRequest extends HttpServletRequestWrapper {private HttpServletRequest request;private boolean hasEncode = false;public EncodingRequest(HttpServletRequest request) {super(request);this.request = request;}@Overridepublic String getParameter(String name) {// 通过getParameterMap方法完成String[] values = getParameterValues(name);if (values == null) {return null;}return values[0];}@Overridepublic String[] getParameterValues(String name) {// 通过getParameterMap方法完成Map<String, String[]> parameterMap = getParameterMap();String[] values = parameterMap.get(name);return values;}@Overridepublic Map getParameterMap() {Map<String, String[]> parameterMap = request.getParameterMap();String method = request.getMethod();if (method.equalsIgnoreCase("post")) {return parameterMap;}// get提交方式 手动转码 , 这里的转码只进行一次 所以通过 hasEncode 布尔类型变量控制if (!hasEncode) {Set<String> keys = parameterMap.keySet();for (String key : keys) {String[] values = parameterMap.get(key);if (values == null) {continue;}for (int i = 0; i < values.length; i++) {String value = values[i];// 解决gettry {value = new String(value.getBytes("ISO-8859-1"),"utf-8");// values是一个地址values[i] = value;} catch (UnsupportedEncodingException e) {e.printStackTrace();}}// 一次转码完成后,设置转码状态为truehasEncode = true;}}return parameterMap;}}
</pre><pre name="code" class="java">在工程web.xml文件中添加如下代码:
<pre name="code" class="html"> <filter> <filter-name>EncodingFilter</filter-name> <filter-class>cn.itcast.estore.web.filter.EncodingFilter</filter-class> </filter> <filter-mapping> <filter-name>EncodingFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>
0 0
- 过滤器解决乱码问题
- 过滤器解决中文乱码问题
- 过滤器-解决中文乱码问题
- 过滤器 Filter 解决乱码问题
- springMVC过滤器解决乱码问题
- 过滤器 解决中文乱码问题
- 过滤器filter-解决乱码的问题
- jsp利用过滤器解决中文乱码问题
- 利用过滤器filter解决乱码问题
- 用过滤器解决jsp乱码问题!!
- 解决乱码问题 如何配置过滤器
- 过滤器解决Struts2中的中文乱码问题
- 利用过滤器解决jsp乱码问题
- 使用过滤器解决中文乱码问题
- 利用过滤器解决jsp中的乱码问题
- javaweb 过滤器的应用解决乱码问题
- javaweb中使用过滤器解决乱码问题
- struts使用过滤器解决中文乱码问题
- 一个大型的平台项目,做起来,真的是挺累的
- 解决jquery升级1.6后checkbox的attr(checked)一直为undefined问题
- 关于彩信发送报告的研究
- 算法导论-----------------最优二叉搜索树
- linux JDK1.5 bin 安装
- 过滤器解决乱码问题
- hdu1195 Open the Lock (BFS)
- 复数
- java mail
- 黑马程序员——Java语言基础——02.java语言基础组成(3)函数
- 单例模式
- 第十六周项目四动态数组扩容
- 关于本博客的版权相关问题
- Android 网络通信框架Volley简介(Google IO 2013)