java post请求乱码问题_javaweb解决post和get请求方式中文乱码问题(通用)

1 importjava.io.IOException;2 importjava.io.UnsupportedEncodingException;3 importjava.util.Map;4

5 importjavax.servlet.Filter;6 importjavax.servlet.FilterChain;7 importjavax.servlet.FilterConfig;8 importjavax.servlet.HttpConstraintElement;9 importjavax.servlet.ServletException;10 importjavax.servlet.ServletRequest;11 importjavax.servlet.ServletResponse;12 importjavax.servlet.http.HttpServletRequest;13 importjavax.servlet.http.HttpServletRequestWrapper;14

15 /**

16 * 通用解决get 和 post 方式请求的中文乱码问题17 *@author代码小杨18 *19 */

20 public class EncodingFilter implementsFilter {21

22 public voiddestroy() {23 }24

25 @Override26 public voiddoFilter(ServletRequest request, ServletResponse response,27 FilterChain chain) throwsIOException, ServletException {28 //处理请求乱码

29 HttpServletRequest httpServletRequest =(HttpServletRequest) request;30 HttpServletRequest myRequest = newMyRequest(httpServletRequest);31

32 //处理响应乱码

33 response.setContentType("text/html;charset=utf-8");34 chain.doFilter(myRequest, response);35 }36

37 @Override38 public void init(FilterConfig filterConfig) throwsServletException {39

40 }41 }42

43 //自定义request对象

44 class MyRequest extendsHttpServletRequestWrapper{45

46 privateHttpServletRequest request;47 private booleanhasEncode;48

49 publicMyRequest(HttpServletRequest request) {50 super(request);51 this.request=request;52 }53

54 //对需要增强的方法 进行覆盖

55 @Override56 publicMap getParameterMap() {57 //先获得请求方式

58 String method =request.getMethod();59 if(method.equalsIgnoreCase("post")){ //post方式请求

60 try{61 request.setCharacterEncoding("utf-8");62 returnrequest.getParameterMap();63 } catch(UnsupportedEncodingException e) {64 e.printStackTrace();65 }66 }else if(method.equalsIgnoreCase("get")){ //get方式请求

67 Map parameterMap =request.getParameterMap();68 if(!hasEncode){69 for(String parameterName:parameterMap.keySet()){70 String[] values =parameterMap.get(parameterName);71 if(values!=null){72 for (int i = 0; i < values.length; i++) {73 try{74 values[i] = new String(values[i].getBytes("ISO-8859-1"),"utf-8");75 } catch(UnsupportedEncodingException e) {76 e.printStackTrace();77 }78 }79 }80 }81 hasEncode = true;82 }83 returnparameterMap;84 }85 return super.getParameterMap();86 }87

88 @Override89 publicString getParameter(String name) {90 Map parameterMap =getParameterMap();91 String[] values =parameterMap.get(name);92 if(values==null){93 return null;94 }95 return values[0];96 }97

98 @Override99 publicString[] getParameterValues(String name) {100 Map parameterMap =getParameterMap();101 String[] values=parameterMap.get(name);102 returnvalues;103 }104 }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值