解决中文乱码的filter(包括get和post提交两种方式)
2016-06-07 22:12
639 查看
解决中文乱码的filter(包括get和post提交两种方式)
public class TomcatFormFilter implements Filter {public void destroy() {
// TODO Auto-generated method stub
}
public void doFilter(ServletRequest request,
ServletResponse response, FilterChain chain) throws IOException,
ServletException {
// 1. ServletRequest 转成 HttpServletRequest
HttpServletRequest req =
(HttpServletRequest)request;
// 2. 如果是GET,就生成一个Wrapper对象,覆盖获取参数的方法进行转码
if("GET".equalsIgnoreCase(req.getMethod()))
{
req = new
MyRequest(req);
}
// 3.
如果是POST,request.setCharacterEncoding("UTF-8")
else
if("POST".equalsIgnoreCase(req.getMethod())) {
req.setCharacterEncoding("UTF-8");
}
// 4.调用chain.doFilter继续向后执行
chain.doFilter(req, response);
}
public void init(FilterConfig arg0) throws
ServletException {
// TODO Auto-generated method stub
}
}
class MyRequest extends HttpServletRequestWrapper {
public MyRequest(HttpServletRequest request)
{
super(request);
// TODO Auto-generated constructor stub
}
public String changeEncoding(String input, String
srcEncoding, String targetEncoding) {
try {
// 1. 获取源编码的bytes[]
byte[] data =
input.getBytes(srcEncoding);
// 2.
将bytes[]按照制定编码转换为String
return new String(data,
targetEncoding);
} catch (UnsupportedEncodingException e) {
// TODO Auto-generated catch
block
e.printStackTrace();
}
return input;
}
@Override
public String getParameter(String name) {
String value = super.getParameter(name);
if(value != null) {
value = changeEncoding(value,
"ISO8859-1", "UTF-8");
}
return value;
}
@Override
public String[] getParameterValues(String name)
{
String[] values =
super.getParameterValues(name);
if(values != null && values.length >
0) {
for (int i = 0; i <
values.length; i++) {
String value
= values[i];
values[i] =
changeEncoding(value, "ISO8859-1", "UTF-8");
}
}
return values;
}
}
相关文章推荐
- Ruby简明教程之方法(Method)介绍
- php错误提示failed to open stream: HTTP request failed!的完美解决方法
- 小论asp中request与response的用法
- 循环取值Request.QueryString的用法
- Jquery中request和request.form和request.querystring的区别
- request.getParameter()取值为null的解决方法
- Asp.net内置对象之Request对象(概述及应用)
- 通过过滤器(Filter)解决JSP的Post和Request中文乱码问题
- IE7下ajax之open Method New的说明
- asp下request.querystring("id")与request("id")区别
- 关于request.getHeader("Referer")的问题探讨
- asp.net Request.ServerVariables[] 读解
- Request.UrlReferrer使用详解
- java中request对象各种方法的使用实例分析
- PHP中魔术变量__METHOD__与__FUNCTION__的区别
- YII Framework学习之request与response用法(基于CHttpRequest响应)
- Node.js中Request模块处理HTTP协议请求的基本使用教程
- PHP的魔术常量__METHOD__简介
- php中使用$_REQUEST需要注意的一个问题
- 跟我学Laravel之请求(Request)的生命周期