A标签中传递的中文参数到Servlet 后台request.getParameter()接收时出现中文乱码
package util;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletRequestWrapper;
import java.io.UnsupportedEncodingException;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
public class MyHttpServletRequest extends HttpServletRequestWrapper {
protected Log log = LogFactory.getLog(getClass());
private static final String ENCODED = "UTF-8",DECODE="ISO8859-1";
public MyHttpServletRequest(HttpServletRequest request) {
super(request);
}
@Override
public String getQueryString() {
String queryString = super.getQueryString();
if(queryString != null){
try {
return new String(queryString.getBytes(DECODE),ENCODED);
} catch (UnsupportedEncodingException e) {
log.info(e.getMessage(),e);
}
}
return queryString;
}
@Override
public String getParameter(String name) {
String value = super.getParameter(name);
if (value != null) {
try {
return new String(value.getBytes(DECODE), ENCODED);
} catch (UnsupportedEncodingException e) {
log.info(e.getMessage(),e);
}
}
return value;
}
@SuppressWarnings("unchecked")
@Override
public Map getParameterMap() {
Map<String, String[]> values = super.getParameterMap();
Map<String, String[]> valuesMap = new HashMap<String, String[]>();
Set<String> names = values.keySet();
for (Iterator<String> iter = names.iterator(); iter.hasNext();) {
String name= iter.next();
String[] v = values.get(name);
if(v != null) {
String[] valuesCopy = new String[v.length];
for(int i = 0; i < v.length; i++) {
try {
valuesCopy[i] = new String(v[i].getBytes(DECODE), ENCODED);
} catch (UnsupportedEncodingException e) {
log.info(e.getMessage(),e);
}
}
valuesMap.put(name, valuesCopy);// 向新Map放入转码过的值
}
}
return valuesMap;// 返回是副本
}
@Override
public String[] getParameterValues(String name) {
String[] values = super.getParameterValues(name);
if(values != null) {
String[] valuesCopy = new String[values.length];//原数组是只读的,不能修改
for(int i = 0; i < values.length; i++) {
try {
valuesCopy[i] = new String(values[i].getBytes(DECODE), ENCODED);
} catch (UnsupportedEncodingException e) {
log.info(e.getMessage(),e);
}
}
return valuesCopy;
}
return values;
}
}
后台调用
request = new MyHttpServletRequest(request);
来自:http://bbs.csdn.net/topics/320081498 回答的二楼作者
A标签中传递的中文参数到Servlet 后台request.getParameter()接收时出现中文乱码的更多相关文章
- SpringMVC中使用Ajax POST请求以json格式传递参数服务端通过request.getParameter("name")无法获取参数值问题分析
SpringMVC中使用Ajax POST请求以json格式传递参数服务端通过request.getParameter("name")无法获取参数值问题分析 一:问题demo展示 ...
- css pre如果同时运用了css的border-radius、 overflow两个属性且标签中内容太多时,外部div滚动条在firefox下滚动时很卡
pre如果同时运用了css的border-radius. overflow两个属性且标签中内容太多时,外部div滚动条在firefox下滚动时很卡. 解决方法:去掉css中border-radius. ...
- MyBatis 中传递多个参数的 4 种方式
方式 1 :封装成对象入参 #{对应实体类的属性} //UserMapper.java 接口 /** * 多条件查询:根据用户名称(模糊查询)和用户角色查询用户列表(参数:对象入参) * @para ...
- Mybatis中传递多个参数的方法总结
一.单个参数: public List<XXBean> getXXBeanList(String xxCode); <select id="getXXXBeanList&q ...
- Mybatis接口中传递多个参数
1.接口 public interface MemberMapper { public boolean insertMember(Members member); public Members sel ...
- 分享url带中文参数,打开html操作完毕跳转jsp页面中文乱码解决
1.在app端分享参数组合时不对传递的url进行任何编码. 2.打开html页面时使用 escape函数对有中文的参数进行编码 escape(GetQueryString("paramete ...
- 过滤器中处理multipart/form-data头部的post请求request.getParameter(")获取不到参数问题
如果不是文件类型请求,我们使用request.getParameter("");方法是可以获取到参数内容的,如果是文件类型的请求即请求的头部信息为“multipart/form-d ...
- request.getParameter()及解决数据库中文乱码问题——实习第七天
今天老师让我们自己做一个小项目,我开始着手于实现这个小项目.途中遇到过几个小问题,在此做个小记录, 相信后期还是会借鉴的. 1,从前台传入数据给后台传入数据,并没有传入成功: 输出的为Null. 当然 ...
- 通过重写request.getParameter方法来解决中文乱码问题。
在原生servlet的商城项目中,BeanUtils.populate方法封装不上注册的参数. 已知BeanUtils.populate方法是封装不上date对象的,于是自定义了一个转换器用来封装Da ...
随机推荐
- 字典(dictionary) 的基本操作
info = { ’stu1101‘ : ’xiaoming’, ‘stu1102 : xiahong‘, ’stu1103 : ‘xiaozhi', } 1. 字典的获取 info.get('stu ...
- jenkins 修改工作目录
修改Jenkins路径 Jenkins的默认安装路径是/var/lib/jenkins 现在由于这个根目录的磁盘太小,所以切换到/data 目录下. Jenkins目录.端口.工作目录等信息在/etc ...
- spring 中的断言的作用
org.springframework.util.AssertAssert翻译为中文为"断言".用过JUNIT的应该都知道这个概念了.就是断定某一个实际的值就为自己预期想得到的,如 ...
- c++实现贪食蛇
今天老师布置了作业 让我们观察c++实现贪食蛇的代码 #include<windows.h> #include<time.h> #include<stdlib.h> ...
- 吴裕雄 python神经网络 水果图片识别(1)
import osimport numpy as npimport matplotlib.pyplot as pltfrom skimage import color,data,transform,i ...
- js 获取input选择的图片的信息
1JS $("#btn").click(function () { var imageEle = document.getElementById("images" ...
- PR数量回写重复
- Zabbix 监控端口状态并邮件报警
Zabbix监控端口 前提 zabbix安装 zabbix邮件报警 添加监控项 添加触发器 添加动作 设置完成后,在配置过报警媒介后也就是 邮件报警 后就完成了.
- 安装和使用iOS的包管理工具CocoaPods
CocoaPods是ruby实现的,需要用ruby进行安装,mac自带ruby,如果没有ruby的需要先安装ruby. 安装CocoaPods命令 安装CocoaPods命令:sudo gem i ...
- dfs小练 【dfs】
1.前n个自然数的所有排列: #include <iostream> #include <cstdio> #include <cstring> using name ...