本文主要讲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中文乱码问题的更多相关文章

  1. jquery插件导出excel和pdf(解决中文乱码问题)

    参考文件:http://jackyrong.iteye.com/blog/2169683 https://my.oschina.net/aruan/blog/418980 https://segmen ...

  2. JavaWeb中文乱码问题解决思路

    1.提交页面请求或者服务器端的响应时,需要确保页面编码当时与服务器编码方式是否一致. 2.对于从服务器写入数据库中的数据和从数据库中读取到服务器中的数据,需要确保服务器编码方式与数据库编码方式是否一致 ...

  3. JQuery以JSON方式提交数据到服务端

    JQuery将Ajax数据请求进行了封装,从而使得该操作实现起来容易许多.以往我们要写很多的代码来实现该功能,现在只需要调用$.ajax()方法,并指明请求的方式.地址.数据类型,以及回调方法等.下面 ...

  4. ajax中url赋json格式的值时发生中文乱码的相关问题

    具体流程:转入到jsp界面时会加载ajax,ajax转到url时传带hide在jsp界面的值titleString,其来源见下面的代码. String title=new String("\ ...

  5. 如何解析DELPHI XE5服务器返回的JSON数据(翻译)及中文乱码

    <span style="font-size:14px;">一直想找如何解析JSON数据的说,今天终于找到有人发帖子了.之前有人说用superobject,Tlkjso ...

  6. jquery中使用serialize() 序列化表单时 中文乱码问题

    序列化中文时之所以乱码是因为.serialize()调用了encodeURLComponent方法将数据编码了 解决方法就是进行解码 1 原因:.serialize()自动调用了encodeURICo ...

  7. jQuery使用serialize()表单序列化时出现中文乱码问题&js获取url中的参数,并保证获取到的参数不乱码

    序列化中文时之所以乱码是因为.serialize()调用了encodeURLComponent方法将数据编码了 解决方法就是进行解码 原因:.serialize()自动调用了encodeURIComp ...

  8. JSON数据显示在jsp页面上中文乱码的解决办法

    在@RequestMapping属性添加属性produces = "text/html;charset=utf-8",设置字符集为utf-8即可 代码如下: @RequestMap ...

  9. jsp get方式请求参数中包含中文乱码问题解决

    1. 自己接收到参数之后在后台进行转码处理 2: 修改tomcat的配置文件  server.xml <Connector port="8080" protocol=&quo ...

随机推荐

  1. HttpResponseRedirect VS HttpResponse

    当我们处理了post提交的数据之后,我们使用HttpResponseRedirect跳转到另一个页面,而不是用HttpResponse. 例如当一个投票环节时使用HttpResponse可以使用浏览器 ...

  2. FLUSH TABLES WITH READ LOCK 锁全局

    [root@wx03 ~]# cat a3.sh mysql -uroot -p1234567<<eof use scan; FLUSH TABLES WITH READ LOCK; sy ...

  3. 基于visual Studio2013解决C语言竞赛题之0605strcat

      题目

  4. Fragment使用

    当我们需要动态的多界面切换的时候,就需要将UI元素和Activity融合成一个模块.在2.3中我们一般通过各种Activity中进行跳转来实现多界面的跳转和单个界面动态改变.在4.0或以上系统中就可以 ...

  5. Website 内容管理

    公司网站后是这样的. 用的是中企动力的,后台还是比较好管理的.所以不多说什么了.

  6. JQuery - 根据节点获取对应的id,可用于留言板

    可以用于留言版的,点击展看和收起.显示评论等等功能. 效果: ----------------- html代码: JQuery代码:

  7. Android 关于网址,电话号码,邮箱的正则表达式-最权威

    需求:判断网址是否合法 今天在写一个项目的时候,需要能够识别网址的功能,首先想到的是正则表达式 但是网址的类型多种多样,网络上各种表达式也一搜一大把,很难知道哪一位大神写的靠谱 发现:TextView ...

  8. Windows Azure 安全最佳实践 - 第 6 部分:Azure 服务如何扩展应用程序安全性

    多种Windows Azure服务可以帮助您将应用程序安全性扩展到云. 有三种服务可提供多个提供程序之间的身份标识映射.内部部署数据中心间的连接和相互发送消息的应用程序功能(无论应用程序位于何处). ...

  9. Mnesia基本用法

    查看表结构 查看mnesia表的结构: mnesia:info(). 查看此表的基本信息: mnesia:table_info(<tableName>, all). Mnesia初使化 m ...

  10. Java进阶01 String类

    链接地址:http://www.cnblogs.com/vamei/archive/2013/04/08/3000914.html 作者:Vamei 出处:http://www.cnblogs.com ...