Jeesite中解决GET请求及POST乱码
来源:互联网 发布:淘宝短链接怎么生成 编辑:程序博客网 时间:2024/06/04 19:58
我们在使用jeesite进行开发的时候,在CMS中的评论管理中后发现乱码问题,这个乱码是由于GET请求传递中文造成的,我们的解决方案是自定义编码过滤器解决。
相应的代码如下:
package com.thinkgem.jeesite.common.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 GetAndPostEncodingFilter implements Filter {@Overridepublic void init(FilterConfig filterConfig) throws ServletException {// TODO Auto-generated method stub}@Overridepublic void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)throws IOException, ServletException {//处理请求乱码HttpServletRequest httpServletRequest = (HttpServletRequest) request;HttpServletRequest myRequest = new MyRequest(httpServletRequest);//处理响应乱码response.setContentType("text/html;charset=utf-8");chain.doFilter(myRequest, response);}@Overridepublic void destroy() {// TODO Auto-generated method stub}}//自定义request对象class MyRequest extends HttpServletRequestWrapper{ private HttpServletRequest request; private boolean hasEncode; public MyRequest(HttpServletRequest request) { super(request); this.request=request; } //对需要增强的方法 进行覆盖 @Override @SuppressWarnings("unchecked") public Map<String,String[]> getParameterMap() { //先获得请求方式 String method = request.getMethod(); if(method.equalsIgnoreCase("post")){ //post方式请求 try { request.setCharacterEncoding("utf-8"); return request.getParameterMap(); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } }else if(method.equalsIgnoreCase("get")){ //get方式请求Map<String,String[]> parameterMap = request.getParameterMap(); if(!hasEncode){ for(String parameterName:parameterMap.keySet()){ String[] values = parameterMap.get(parameterName); if(values!=null){ for (int i = 0; i < values.length; i++) { try { values[i] = new String(values[i].getBytes("ISO-8859-1"),"utf-8"); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } } } } hasEncode = true; } return parameterMap; } return super.getParameterMap(); } @Override public String getParameter(String name) { Map<String,String[]> parameterMap = getParameterMap(); String[] values = parameterMap.get(name); if(values==null){ return null; } return values[0]; } @Override public String[] getParameterValues(String name) { Map<String,String[]> parameterMap = getParameterMap(); String[] values=parameterMap.get(name); return values; }}
相应的web.xml配置如下:
<!-- 自定义编码过滤器解决POST请求与GET请求乱码问题 --><filter><filter-name>getAndPostEncodingFilter</filter-name><filter-class>com.thinkgem.jeesite.common.filter.GetAndPostEncodingFilter</filter-class></filter><filter-mapping><filter-name>getAndPostEncodingFilter</filter-name><url-pattern>/*</url-pattern></filter-mapping>
阅读全文
0 0
- Jeesite中解决GET请求及POST乱码
- 解决Get和Post请求中中文乱码问题
- 解决Get和post请求中中文乱码问题
- servlet中post与get请求中文乱码解决
- 解决Sping Mvc中post、get请求中文乱码问题
- get post 中文请求乱码解决方式
- 解决 post和get请求乱码
- post和get请求乱码解决
- springmvc GET POST请求乱码解决
- 解决get和post请求 全部乱码
- post及get请求中文乱码解决方案
- Struts2中解决POST请求和GET请求中的中文乱码问题
- Struts2中解决POST请求和GET请求中的中文乱码问题
- get请求和post的请求的乱码解决
- 解决get请求乱码问题,js实现post请求
- POST请求和GET请求分别解决乱码问题
- 解决servlet中文乱码问题及get、post请求方式的讲解
- SpringMVC中post、get乱码解决
- 微信小程序开发关于地图图片显示不出问题
- Microsoft 顺序分析和聚类分析
- 欧几里得几何(1)Alpha
- L1-025. 正整数A+B【未完成】
- PAT哈利·波特的考试(现学现卖啦)
- Jeesite中解决GET请求及POST乱码
- 第十三周LeetCode
- Spring @Transactional学习
- 验证手机格式
- CRF有用的网站
- 读
- 集合的addAll与retainAll方法
- UDP 53/67/68 端口转发 绕过登录 免流上网
- 《深入浅出Mysql》阅读笔记(前九章)