SpringMVC系列(三)JQuery和JSON方式参数传递并处理JAVAWEB中文乱码问题
2015-03-25 17:01
826 查看
本文主要讲springMVC中视图和控制器之间常用的两种传递参数的方式:
1、JQuery
2、JSON
一、JQuery方式
思路:单击按钮后,触发JQuery事件,而提交整个表单
JSP中
[javascript]
view plaincopy
<script type="text/javascript">
function addUser(){
var form=document.form[0];
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中的参数要一致
[java]
view plaincopy
@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
[html]
view plaincopy
<%@ page language="java" pageEncoding="UTF-8"%>
2、设置服务器(此处为tomcat)URIEncoding="UTF-8"
...\tomcat\apache-tomcat-6.0.35\conf\server.xml
[html]
view plaincopy
<Connector URIEncoding="UTF-8" port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
此处只能解决GET提交的乱码问题,而不能解决POST提交!主要是由于传参方式不同
解决POST的乱码问题,请参见以下方案:
3、spring配置文件中用filter过滤
在初始化的时候设置ForceEncoding为强制编码True
url-pattern中:设置*.jsp表示对所有jsp页面过滤;设置为*/表示对所有请求过滤
[html]
view plaincopy
<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-8</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>/*</url-pattern>
</filter-mapping>
二、JSON方式
思路:通过控件的ID获取值,然后转化为JSON格式进行传递
此处容易出现问题:POST提交正常,GET提交乱码
解决方案:先JQuery中将获取的值用encodeURI分别进行编码,后controller中取出的时候用URLDecoder.decode分别进行解码即可。
JSP中
用encodeURI分别进行编码
[javascript]
view plaincopy
<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)解码
[java]
view plaincopy
<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方式提交,一定要对传递的参数分别进行编码和解码。
1、JQuery
2、JSON
一、JQuery方式
思路:单击按钮后,触发JQuery事件,而提交整个表单
JSP中
[javascript]
view plaincopy
<script type="text/javascript">
function addUser(){
var form=document.form[0];
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中的参数要一致
[java]
view plaincopy
@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
[html]
view plaincopy
<%@ page language="java" pageEncoding="UTF-8"%>
2、设置服务器(此处为tomcat)URIEncoding="UTF-8"
...\tomcat\apache-tomcat-6.0.35\conf\server.xml
[html]
view plaincopy
<Connector URIEncoding="UTF-8" port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
此处只能解决GET提交的乱码问题,而不能解决POST提交!主要是由于传参方式不同
解决POST的乱码问题,请参见以下方案:
3、spring配置文件中用filter过滤
在初始化的时候设置ForceEncoding为强制编码True
url-pattern中:设置*.jsp表示对所有jsp页面过滤;设置为*/表示对所有请求过滤
[html]
view plaincopy
<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-8</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>/*</url-pattern>
</filter-mapping>
二、JSON方式
思路:通过控件的ID获取值,然后转化为JSON格式进行传递
此处容易出现问题:POST提交正常,GET提交乱码
解决方案:先JQuery中将获取的值用encodeURI分别进行编码,后controller中取出的时候用URLDecoder.decode分别进行解码即可。
JSP中
用encodeURI分别进行编码
[javascript]
view plaincopy
<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)解码
[java]
view plaincopy
<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方式提交,一定要对传递的参数分别进行编码和解码。
相关文章推荐
- SpringMVC系列(三)JQuery和JSON方式参数传递并处理JAVAWEB中文乱码问题
- JQuery和JSON方式参数传递并处理JAVAWEB中文乱码问题
- 解决jQuery $.getJSON() 传递参数中文乱码问题
- 解决jQuery $.getJSON() 传递参数中文乱码问题
- asp.net jquery getjson 传递中文参数乱码问题
- asp.net jquery getjson 传递中文参数乱码问题
- 解决jQuery $.getJSON() 传递参数中文乱码问题
- 记解决jQuery $.getJSON() 传递参数中文乱码问题的方法
- springMVC重定向时参数传递及中文参数乱码问题
- 处理Get方法传递中文参数出现中文乱码的问题
- jquery getJson 中文字符参数乱码问题
- 使用Get方式传递中文参数的问题乱码问题
- jquery getJson 中文字符参数乱码问题
- GET方式传递中文参数乱码的问题
- 【转载】jquery getJson 中文字符参数乱码问题的解决办法
- 使用SpringMVC参数传递时,解决get请求时中文乱码的问题
- json传递中文乱码解决方法以及解决request.getParameter()获取参数为乱码的问题
- Javascript与ASP.NET(一般处理程序)关于URL(get方式)传递中文乱码问题的解决方案
- Struts2 与 js 处理Get方式提交的中文参数乱码问题
- 用IE中文参数乱码问题,其他浏览器不乱码的处理方式