2019独角兽企业重金招聘Python工程师标准>>>

Spring的CharacterEncodingFilter 只能对post参数转码;要解决get中文乱码还得用这个:

import java.io.IOException;
import java.util.Collections;
import java.util.Enumeration;
import java.util.HashMap;
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;
import javax.servlet.http.HttpServletResponse;import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;@SuppressWarnings("unchecked")
public class GetQueryStringEncoding implements Filter {private static final Log logger = LogFactory
.getLog(GetQueryStringEncoding.class);public void destroy() {
}public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
HttpServletRequest httpReq = (HttpServletRequest) request;
HttpServletResponse httpResp = (HttpServletResponse) response;
httpReq.setCharacterEncoding("UTF-8");
httpResp.setCharacterEncoding("UTF-8");if (httpReq.getQueryString() != null && httpReq.getMethod().equalsIgnoreCase("get")) {
if (logger.isDebugEnabled())
logger.debug("Intercept Query String: "
+ httpReq.getQueryString());
final Map<String, String[]> parameterMap = new HashMap<String, String[]>();
Enumeration paramNames = httpReq.getParameterNames();
while (paramNames.hasMoreElements()) {
String paramName = (String) paramNames.nextElement();
String[] values = httpReq.getParameterValues(paramName);
for (int i = 0; i < values.length; i++) {
if (values[i] != null)
values[i] = new String(
values[i].getBytes("ISO-8859-1"), "UTF-8");
}
parameterMap.put(paramName, values);
}
chain.doFilter(new HttpServletRequestWrapper(httpReq) {@Override
public String getParameter(String name) {
if (parameterMap.get(name) == null)
return null;
return parameterMap.get(name)[0];
}@Override
public Map getParameterMap() {
return parameterMap;
}@Override
public Enumeration getParameterNames() {
return Collections.enumeration(parameterMap.keySet());
}@Override
public String[] getParameterValues(String name) {
return parameterMap.get(name);
}}, response);
} else {
chain.doFilter(request, response);
}} public void init(FilterConfig fConfig) throws ServletException {
if (logger.isInfoEnabled())
logger.info("GetQueryStringEncoding Filter install...");
}}

红色部分不是来自原文,是我新加的。

转载于:https://my.oschina.net/mashiguang/blog/55210

A Filter of Java URL Encoding: GetQueryStringEn...相关推荐

  1. 【转】Java URL Encoding and Decoding

    转自:http://linvar.javaeye.com/blog/619573 另外这个在线的工具不错:http://54caizi.com/tools/encode.asp ,可以进行URLEnc ...

  2. java querystring_Java URL encoding of query string parameters

    可以将文章内容翻译成中文,广告屏蔽插件会导致该功能失效: 问题: Say I have a URL http://example.com/query?q= and I have a query ent ...

  3. java url加密解密,java URL 编码解码,该如何解决

    java URL 编码解码 我写了两个接口 一个是对字符串加密 的,一个是解密的  .加密的可以通过调用接口生成加密字符串如下: Oc0PEwKrLzHqT25hYLhWP5wlk5HROPJoWC3 ...

  4. SpringBoot 利用过滤器Filter修改请求url地址

    要求: 代码中配置的url路径为http://127.0.0.1/api/associates/queryAssociatesInfo 现在要求http://127.0.0.1/associates/ ...

  5. Atitit.struts排除url 的设计and 原理 自定义filter 排除特定url

    Atitit.struts排除url 的设计and 原理 自定义filter 排除特定url 1.1. 原理流程1 2. Invoke1 3. StrutsX2 1.1. 原理流程 读取struts配 ...

  6. 通过过滤器Filter来完成url访问权限限制

    1.新建过滤器类: package com.xiami.manager.filter; import java.io.IOException; import javax.servlet.Filter; ...

  7. filter过滤器设置URL例外

    在web.xml声明的一个filter中: <!– session过滤filter –> <filter><filter-name>SessionFilter< ...

  8. UrlUtils工具类,Java URL工具类,Java URL链接工具类

    UrlUtils工具类,Java URL工具类,Java URL链接工具类 >>>>>>>>>>>>>>>&g ...

  9. java中http解析url,java url 编码(解析http请求汉语言地址 )

    java url 编码(解析http请求中文地址 ) 在近在做项目的过程中,由于客户那边服务器上提供的有很多中文结构目录.请求要的地址不能正常运行显示出来.下面来分享一下我对http协议处理请求中文的 ...

最新文章

  1. acess dao示例
  2. ckks方案优化最好的_果断收藏:SEO高级优化技能升级策略!
  3. 925. Long Pressed Name 长按键入
  4. jax-rs jax-ws_Google App Engine JAX-RS REST服务
  5. 010 pandas的DataFrame
  6. ​我敢说,这是最全的常用设计模式汇总
  7. 完全卸载go语言编译器
  8. 安装PhantomJS
  9. 2022秋软工实践个人作业一
  10. EmmyLua ProtoBuf Api提示
  11. 基于C# 的学生信息管理系统
  12. 从传统文化中领悟贵金属白银现货走势分析方法
  13. Kotlin 只读变量
  14. Python -- 堆数据结构 heapq - I love this game! - 博客频道 - CSDN.NET
  15. Win系统 - 怎么样卸载 Win10 更新补丁,如何删除系统安全补丁
  16. unwallet白皮书解读
  17. 亲身经历,全盘加密需慎重!!开启TPM后可能会加密硬盘 这个按钮不要碰
  18. 健康和食品行业调研报告 - 市场现状分析与发展前景预测(2021-2027年)
  19. 观点 | 关于元宇宙的21个真相
  20. 面向对象的三大特征(封装、继承、多态)

热门文章

  1. solr集成IKAnalyzer中文分词器
  2. VMware vsphere 中创建虚拟机的方法
  3. 分组(recyclerview嵌套)
  4. python做软件测试需要那些条件_做软件测试需要学什么
  5. php gzip 关闭,php能否在当前脚本页关闭nginx的gzip输出
  6. LOL服务器维护打排位算吗,LOL:请停止你的排位行为,这是连败前的征兆!再玩就会一直掉分...
  7. 数据库,部分函数依赖,传递函数依赖,完全函数依赖,三种范式的区别
  8. return 0可以不加吗_拼多多开店可以不交保证金? 拼多多0元开店是真的吗?
  9. java urlconnection乱码_HttpURLConnection 请求乱码
  10. 一台微型计算机必须具备的设备,计算机应用基础复习题(含答案)1、填空题一台微型计算机必须具备的.doc...