zoukankan      html  css  js  c++  java
  • Spring mvc get和post传值乱码问题

    1.url拼值 传单值 对象 list  map都是用json的格式传入后台

    <%@ page language="java" contentType="text/html; charset=utf-8"
    pageEncoding="utf-8"%>
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    <title>Insert title here</title>
    <link href="../css/bootstrap.css" rel='stylesheet' type='text/css' />
    <!-- jQuery (necessary for Bootstrap's JavaScript plugins) -->
    <script src="../js/jquery.min.js"></script>
    <!-- Custom Theme files -->
    <link href="../css/style.css" rel="stylesheet" type="text/css" media="all" />
    </head>
    <body>
    <input type="button" onclick="clink1()" value="通过Url?传值">
    <input type="button" onclick="clink2()" value="单值传参">
    <input type="button" onclick="clink3()" value="对象传参">
    <input type="button" onclick="clink4()" value="List传值">
    <input type="button" onclick="clink5()" value="map传值">
    <script type="text/javascript">

    function clink1(){
    var url="/ajax/testUrl?dataParam=test";
    $.ajax({
    type:"post",
    url:url,
    dataType:'json',
    success:function(data){
    alert(JSON.stringify(data));
    }
    });
    }
    function clink2(){
    var url="/ajax/testData";
    $.ajax({
    type:"post",
    data:{dataParam:"test",str:"测试"},
    url:url,
    dataType:'json',
    success:function(data){
    alert(JSON.stringify(data));
    }
    });
    }
    function clink3(){
    var url="/ajax/testObject";
    var org={id:1,age:1,name:"zhu",happy:"睡觉"};
    $.ajax({
    type:"post",
    data:org,
    url:url,
    data:org,
    dataType:'json',
    success:function(data){
    alert(JSON.stringify(data));
    }
    });
    }
    function clink4(){
    var url="/ajax/testList";
    var userList = JSON.stringify([
    {id:1,age:1,name:"zhu",hobby:"睡觉"},
    {id:1,age:22,name:"zhu2",hobby:"睡觉2"}
    ]);
    $.ajax({
    type:"post",
    data:userList,
    url:url,
    contentType:'application/json; charset=UTF-8',
    dataType:'json',
    success:function(data){
    alert(JSON.stringify(data));
    }
    });
    }
    function clink5(){
    var url="/ajax/testMap";
    var userList = JSON.stringify({"姓名":"wanglin","age":"18"});
    $.ajax({
    type:"post",
    data:userList,
    url:url,
    contentType:'application/json; charset=UTF-8',
    dataType:'json',
    success:function(data){
    alert(JSON.stringify(data));
    }
    });
    }
    </script>
    </body>
    </html>

    2.后台代码

    package cn.springmvc.controller;

    import java.io.UnsupportedEncodingException;
    import java.util.ArrayList;
    import java.util.List;
    import java.util.Map;

    import javax.servlet.http.HttpServletRequest;

    import org.springframework.http.HttpRequest;
    import org.springframework.stereotype.Controller;
    import org.springframework.web.bind.annotation.RequestBody;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.RequestMethod;
    import org.springframework.web.bind.annotation.ResponseBody;

    import cn.springmvc.model.User;
    import cn.springmvc.util.ActionResult;
    import cn.springmvc.util.DataResult;

    import com.alibaba.fastjson.JSON;
    import com.alibaba.fastjson.JSONArray;
    import com.alibaba.fastjson.JSONObject;

    @Controller
    @RequestMapping("ajax")
    public class AjaxDom {
    /**
    *
    * @Title: test1
    * @Description: url传值
    * @param @param dataParam
    * @param @return
    * @return String
    * @throws
    */
    @RequestMapping(value="/testUrl",method=RequestMethod.POST)
    public @ResponseBody String test1(String dataParam){
    ActionResult ActionResult=new ActionResult(true,dataParam);
    //对象转json
    String json = JSON.toJSONString(ActionResult);
    return json;
    }
    /**
    * get方式
    * @Title: testget
    * @Description: TODO
    * @param @param dataParam
    * @param @return
    * @return String
    * @throws
    */
    @RequestMapping(value="/testUrl")
    public @ResponseBody String testget(String dataParam ){
    ActionResult ActionResult=new ActionResult(true,dataParam);
    //对象转json
    String json = JSON.toJSONString(ActionResult);
    return json;
    }
    /**
    * 传单值
    * @Title: test2
    * @Description: TODO
    * @param @param dataParam
    * @param @return
    * @return String
    * @throws
    */
    @RequestMapping(value="/testData",method=RequestMethod.POST)
    public @ResponseBody String test2(String dataParam,String str){
    ActionResult ActionResult=new ActionResult(true,str);
    //对象转json
    String json = JSON.toJSONString(ActionResult);
    return json;
    }
    /**
    * 对象传值
    * @Title: test3
    * @Description: TODO
    * @param @param dataParam
    * @param @return
    * @return String
    * @throws
    */
    @RequestMapping(value="/testObject",method=RequestMethod.POST)
    public @ResponseBody String test3(User user){
    List<User> userList=new ArrayList<User>();
    userList.add(user);
    DataResult dataResult=new DataResult(userList);
    //对象转json
    String json = JSON.toJSONString(dataResult);
    return json;
    }
    /**
    * List传值
    * @Title: test4
    * @Description: TODO
    * @param @param dataParam
    * @param @return
    * @return String
    * @throws
    */
    @RequestMapping(value="/testList",method=RequestMethod.POST)
    public @ResponseBody String test4(@RequestBody String userList){

    List<User> list = JSON.parseArray(userList, User.class);
    DataResult dataResult=new DataResult(list);
    //对象转json
    String json = JSON.toJSONString(dataResult);
    return json;
    }
    /**
    * map传值
    * @Title: test5
    * @Description: TODO
    * @param @param dataParam
    * @param @return
    * @return String
    * @throws
    */
    @RequestMapping(value="/testMap",method=RequestMethod.POST)
    public @ResponseBody String test5(@RequestBody String userMap){
    @SuppressWarnings("unchecked")
    Map<String,String> map= (Map<String,String>)JSON.parse(userMap);
    DataResult dataResult=new DataResult(map);
    //对象转json
    String json = JSON.toJSONString(dataResult);
    return json;
    }
    }

    3.传入后台需要在web.xml配置编码格式

    <filter>
    <filter-name>SpringEncodingFilter</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>SpringEncodingFilter</filter-name>
    <url-pattern>/*</url-pattern>
    </filter-mapping>

    4.返回值乱码问题 需要在spring mvc的xml里配置

    <!-- 解决json @Respone返回值乱码问题 -->
    <bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping" />

    <bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter" >

    <property name="messageConverters">

    <list>

    <bean class = "org.springframework.http.converter.StringHttpMessageConverter">

    <constructor-arg>

    <bean class="org.springframework.beans.factory.config.MethodInvokingFactoryBean">

    <property name="targetClass" value="java.nio.charset.Charset" />

    <property name="targetMethod" value="forName"/>

    <property name="arguments" value="UTF-8"/>

    </bean>

    </constructor-arg>

    </bean>

    </list>

    </property>

    5.最后是spring mvc redirect 参数乱码问题 

    解决在tomcat目录下conf-->server.xml 

    加上URIEncoding="UTF-8"就行

        <Connector connectionTimeout="20000" port="80" protocol="HTTP/1.1" redirectPort="8443" URIEncoding="UTF-8"/>

  • 相关阅读:
    密码学常用解码网站
    macOS VMware Fusion 中 vmtools为灰色
    XSS-Payloads
    Tomcat 漏洞总结
    mac 更新完Big Sur需重新配置项目
    sqlmap的使用 ---- 自带绕过脚本tamper
    FTP 日志分析
    CentOS Java环境问题
    Nginx 学习
    英语学习-邮件表达方法 例句
  • 原文地址:https://www.cnblogs.com/Seeasunnyday/p/5480059.html
Copyright © 2011-2022 走看看