码迷,mamicode.com
首页 > 编程语言 > 详细

JQuery和JSON方式参数传递并处理JAVAWEB中文乱码问题

时间:2015-12-31 12:38:01      阅读:244      评论:0      收藏:0      [点我收藏+]

标签:

本文主要讲springMVC中视图和控制器之间常用的两种传递参数的方式:

1、JQuery

2、JSON

一、JQuery方式

思路:单击按钮后,触发JQuery事件,而提交整个表单

JSP中

<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中的参数要一致

@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="8080" protocol="HTTP/1.1" 
               connectionTimeout="20000" 
               redirectPort="8443" />

此处只能解决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-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>/*.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中文乱码问题

标签:

原文地址:http://www.cnblogs.com/zhujiabin/p/5091124.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!