A Filter of Java URL Encoding: GetQueryStringEn...
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...相关推荐
- 【转】Java URL Encoding and Decoding
转自:http://linvar.javaeye.com/blog/619573 另外这个在线的工具不错:http://54caizi.com/tools/encode.asp ,可以进行URLEnc ...
- 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 ...
- java url加密解密,java URL 编码解码,该如何解决
java URL 编码解码 我写了两个接口 一个是对字符串加密 的,一个是解密的 .加密的可以通过调用接口生成加密字符串如下: Oc0PEwKrLzHqT25hYLhWP5wlk5HROPJoWC3 ...
- SpringBoot 利用过滤器Filter修改请求url地址
要求: 代码中配置的url路径为http://127.0.0.1/api/associates/queryAssociatesInfo 现在要求http://127.0.0.1/associates/ ...
- Atitit.struts排除url 的设计and 原理 自定义filter 排除特定url
Atitit.struts排除url 的设计and 原理 自定义filter 排除特定url 1.1. 原理流程1 2. Invoke1 3. StrutsX2 1.1. 原理流程 读取struts配 ...
- 通过过滤器Filter来完成url访问权限限制
1.新建过滤器类: package com.xiami.manager.filter; import java.io.IOException; import javax.servlet.Filter; ...
- filter过滤器设置URL例外
在web.xml声明的一个filter中: <!– session过滤filter –> <filter><filter-name>SessionFilter< ...
- UrlUtils工具类,Java URL工具类,Java URL链接工具类
UrlUtils工具类,Java URL工具类,Java URL链接工具类 >>>>>>>>>>>>>>>&g ...
- java中http解析url,java url 编码(解析http请求汉语言地址 )
java url 编码(解析http请求中文地址 ) 在近在做项目的过程中,由于客户那边服务器上提供的有很多中文结构目录.请求要的地址不能正常运行显示出来.下面来分享一下我对http协议处理请求中文的 ...
最新文章
- acess dao示例
- ckks方案优化最好的_果断收藏:SEO高级优化技能升级策略!
- 925. Long Pressed Name 长按键入
- jax-rs jax-ws_Google App Engine JAX-RS REST服务
- 010 pandas的DataFrame
- ​我敢说,这是最全的常用设计模式汇总
- 完全卸载go语言编译器
- 安装PhantomJS
- 2022秋软工实践个人作业一
- EmmyLua ProtoBuf Api提示
- 基于C# 的学生信息管理系统
- 从传统文化中领悟贵金属白银现货走势分析方法
- Kotlin 只读变量
- Python -- 堆数据结构 heapq - I love this game! - 博客频道 - CSDN.NET
- Win系统 - 怎么样卸载 Win10 更新补丁,如何删除系统安全补丁
- unwallet白皮书解读
- 亲身经历,全盘加密需慎重!!开启TPM后可能会加密硬盘 这个按钮不要碰
- 健康和食品行业调研报告 - 市场现状分析与发展前景预测(2021-2027年)
- 观点 | 关于元宇宙的21个真相
- 面向对象的三大特征(封装、继承、多态)
热门文章
- solr集成IKAnalyzer中文分词器
- VMware vsphere 中创建虚拟机的方法
- 分组(recyclerview嵌套)
- python做软件测试需要那些条件_做软件测试需要学什么
- php gzip 关闭,php能否在当前脚本页关闭nginx的gzip输出
- LOL服务器维护打排位算吗,LOL:请停止你的排位行为,这是连败前的征兆!再玩就会一直掉分...
- 数据库,部分函数依赖,传递函数依赖,完全函数依赖,三种范式的区别
- return 0可以不加吗_拼多多开店可以不交保证金? 拼多多0元开店是真的吗?
- java urlconnection乱码_HttpURLConnection 请求乱码
- 一台微型计算机必须具备的设备,计算机应用基础复习题(含答案)1、填空题一台微型计算机必须具备的.doc...