JQuery和JSON方式参数传递并处理JAVAWEB中文乱码问题
本文主要讲springMVC中视图和控制器之间常用的两种传递参数的方式:
1、JQuery
2、JSON
一、JQuery方式
思路:单击按钮后,触发JQuery事件,而提交整个表单
JSP中
<script type="text/javascript">
function addUser(){
var form=document.form[];
form.action="/springMVC/user/data/addUser";
form.method="get";
form.submit();
}
</script>
<body>
<h>添加用户</h>
<form action="">
姓名:<input type="text" name="username"/>
年龄:<input type="text" name="age"/>
<input type="button" value="添加" onclick="addUser()">
</form>
</body>
Controller中
JSP和Controller中的参数要一致
@Controller
@RequestMapping("/user/data")
public class DataController {
//一种:直接获取参数
@RequestMapping("/addUser")
public String addUser(String username,String age,HttpServletRequest request){
request.setAttribute("username",username);
request.setAttribute("age", age); return "/userManager";
}
//另一种:通过User实体获取参数
@RequestMapping("/addUser")
public String addUser(User user,HttpServletRequest request){
request.setAttribute("username",user.getUsername);
request.setAttribute("age", user.getAge); return "/userManager";
}
}
如何解决JAVA WB的中文乱码?
1、JSP中定义页面的编码方式:UTF-8
<%@ page language="java" pageEncoding="UTF-8"%>
2、设置服务器(此处为tomcat)URIEncoding="UTF-8"
...\tomcat\apache-tomcat-6.0.35\conf\server.xml
<Connector URIEncoding="UTF-8" port="" protocol="HTTP/1.1"
connectionTimeout=""
redirectPort="" />
此处只能解决GET提交的乱码问题,而不能解决POST提交!主要是由于传参方式不同
解决POST的乱码问题,请参见以下方案:
3、spring配置文件中用filter过滤
在初始化的时候设置ForceEncoding为强制编码True
url-pattern中:设置*.jsp表示对所有jsp页面过滤;设置为*/表示对所有请求过滤
<filter>
<filter-name>encodingFilter</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-</param-value>
</init-param>
<init-param>
<param-name>forceEncoding</param-name>
<param-value>true</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>encodingFilter</filter-name>
<url-pattern>/*.jsp</url-pattern>
</filter-mapping>
二、JSON方式
思路:通过控件的ID获取值,然后转化为JSON格式进行传递
此处容易出现问题:POST提交正常,GET提交乱码
解决方案:先JQuery中将获取的值用encodeURI分别进行编码,后controller中取出的时候用URLDecoder.decode分别进行解码即可。
JSP中
用encodeURI分别进行编码
<script type="text/javascript">
$(document).ready(function(){
$("add").click(function(){
var userName=encodeURI($("#username").attr("value"));
var age=encodeURI($("#age").attr("value")); var user={userName:userName,age:age}; $.ajax({
url:"/springMVC/user/data/addUser",
type:"get",
data:user,
success:function(data){
alert("userName->"+data.userName+"age->"+data.age);
}
})
})
})
</script>
<body>
<h>添加用户</h>
<form action="">
姓名:<input type="text" name="username"/>
年龄:<input type="text" name="age"/>
<input type="button" value="添加" name="add">
</form>
</body>
Controller中
用URLDecoder.decode(String)解码
<p>@Controller
@RequestMapping("/user/data")
public class DataController {</p><p> //通过User实体获取参数</p><p> @RequestMapping("/addUserJson")
public void addUser(User user,HttpServletRequest request,HttpServletResponse response){
</p><p> //将参数解码</p><p> String userName=URLDecoder.decode(user.getUsername,"UTF-8");
String age=URLDecoder.decode(user.getAge,"UTF-8"); //将获取的参数拼接为JSON格式,后传递到前台显示
//{"userName":"userName","age":"age"}
String result="{\"userName\":\" "+user.getUserName()+" \",\"age\":"+user.getAge()+"\"}";
PrintWriter out=null;
response.setContentType("application/json") try {
out=response.getWriter();
out.write(result);
} catch (IOException e) {
e.printStackTrace();
}</p><p> }
}
</p>
总结:
SpringMVC 页面和控制器之间的传递参数的方式,本文只介绍了最常用的两种方式(JQuery+JSON),重点掌握:JAVA WEB的中文乱码问题。
首先要设置JSP中的编码方式为UTF-8
JQuery方式中,若为GET提交方式乱码,可更改服务器的编码方式;若为POST方式乱码,可配置filter进行过滤
JSON方式中,一般用POST提交方式,正常;若采用GET方式提交,一定要对传递的参数分别进行编码和解码。
JQuery和JSON方式参数传递并处理JAVAWEB中文乱码问题的更多相关文章
- jquery插件导出excel和pdf(解决中文乱码问题)
参考文件:http://jackyrong.iteye.com/blog/2169683 https://my.oschina.net/aruan/blog/418980 https://segmen ...
- JavaWeb中文乱码问题解决思路
1.提交页面请求或者服务器端的响应时,需要确保页面编码当时与服务器编码方式是否一致. 2.对于从服务器写入数据库中的数据和从数据库中读取到服务器中的数据,需要确保服务器编码方式与数据库编码方式是否一致 ...
- JQuery以JSON方式提交数据到服务端
JQuery将Ajax数据请求进行了封装,从而使得该操作实现起来容易许多.以往我们要写很多的代码来实现该功能,现在只需要调用$.ajax()方法,并指明请求的方式.地址.数据类型,以及回调方法等.下面 ...
- ajax中url赋json格式的值时发生中文乱码的相关问题
具体流程:转入到jsp界面时会加载ajax,ajax转到url时传带hide在jsp界面的值titleString,其来源见下面的代码. String title=new String("\ ...
- 如何解析DELPHI XE5服务器返回的JSON数据(翻译)及中文乱码
<span style="font-size:14px;">一直想找如何解析JSON数据的说,今天终于找到有人发帖子了.之前有人说用superobject,Tlkjso ...
- jquery中使用serialize() 序列化表单时 中文乱码问题
序列化中文时之所以乱码是因为.serialize()调用了encodeURLComponent方法将数据编码了 解决方法就是进行解码 1 原因:.serialize()自动调用了encodeURICo ...
- jQuery使用serialize()表单序列化时出现中文乱码问题&js获取url中的参数,并保证获取到的参数不乱码
序列化中文时之所以乱码是因为.serialize()调用了encodeURLComponent方法将数据编码了 解决方法就是进行解码 原因:.serialize()自动调用了encodeURIComp ...
- JSON数据显示在jsp页面上中文乱码的解决办法
在@RequestMapping属性添加属性produces = "text/html;charset=utf-8",设置字符集为utf-8即可 代码如下: @RequestMap ...
- jsp get方式请求参数中包含中文乱码问题解决
1. 自己接收到参数之后在后台进行转码处理 2: 修改tomcat的配置文件 server.xml <Connector port="8080" protocol=&quo ...
随机推荐
- 部署ASP.NET MVC项目
目标:了解部署过程,掌握部署中出现问题该如何处理. 部署网站往往是一件麻烦事,因为在安装部署的过程中,经常有许多步骤要运行,对于许多不太熟悉IIS/SQL的新手来说,部署网站编程一件非常困难且危险的事 ...
- centos php扩展开发流程
原文:centos php扩展开发流程 一.安装php centos 默认 yum 安装 php 版本为 5.3, 很多php框架基本上要求5.4以上版本,这时候不能直接 用 yum install ...
- 一个RPC的demo
从下面的例子中可以看到,Consumer(client)的代码中引用了Provider部分的class,本例中是 com.provider.EchoServiceImpl和com.provider.E ...
- Eclipse下执行main函数报java.lang.NoClassDefFoundError的解决
今天执行eclipse下的一个java类,无论run还是debug,都报java.lang.NoClassDefFoundError.而且把main中函数都注释掉,执行还是报一样的错. 检查了一下这个 ...
- 腾讯QQ:异地登陆也被封号,你们是怎么决策的???
此文我想放到首页,让很多其它的人看到,更期待有人能解释一下.希望管理员给开绿灯. 今天真是费解,我的手机号是青岛的.可是我在武汉工作,因为是3G的卡,全国没有漫游,打电话也没多少钱,所以就没换号. 谁 ...
- Lua学习笔记6:C++和Lua的相互调用
曾经一直用C++写代码.话说近期刚换工作.项目组中的是cocos2dx-lua,各种被虐的非常慘啊有木有. 新建cocos2dx-lua项目.打开class能够发现,事实上就是C++项 ...
- SQL Server 基础 01 数据库、表操作
对着书慢慢学习,一天一点点! 数据库操作 (create.alter.drop) --3-3-1 /create database 语句创建数据库 create database testSQL - ...
- Hadoop 配置文件简介
1.core-site.xml文件 这是一个描述集群中NameNode结点的URI-统一资源标识符(包括协议,主机名称,端口号),集群里面的每一台机器都需要知道 NameNode的地址.DataNod ...
- Google出品的自动Web安全扫描程序 Skipfish 下载及安装使用方法
Skipfish是由google出品的一款自动化的网络安全扫描工具,该工具可以安装在linux.freebsd.MacOS X系统和windows(cygwin). 谷歌工程师Michal Zalew ...
- Spring Web MVC中的页面缓存支持 ——跟我学SpringMVC系列
Spring Web MVC中的页面缓存支持 ——跟我学SpringMVC系列