SpringMVC获取客户端数据几种方式

作者:gqk


 本章目标:

  •  简单数据类型赋值

  •  对象属性赋值

  • 数组赋值

  • 集合赋值

  • restful风格

  • 日期赋值

简单数据类型赋值

通过@RequestParam对简单类型的参数进行绑定。

@RequestMapping("/test1")
    public String test1(@RequestParam("name")String name,

                              @RequestParam("pwd")String pwd,

                              @RequestParam(defaultValue="110")int age){
        System.out.print("name===="+name);
        System.out.print("pwd===="+pwd);
        System.out.print("age===="+age);
        return "hello";

    }

 <!-- 解决post传入中文乱码问题 -->获取参数如果乱码可以在web.xml中配置过滤器

<filter>

        <filter-name>characterEncodingFilter</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>

    </filter>

    <filter-mapping>

对象属性赋值

页面中input的name和controller的pojo形参中的属性名称一致,将页面中数据绑定到pojo对应的属性。

  @RequestMapping("/test2")
    public String test2(User user){
        System.out.print(user);
        return "hello";
    }

数组赋值

1  @RequestMapping("/test3")
2     public String test3(Integer[]ids ){
3         System.out.print(ids);
4         return "hello";
5     }

集合赋值(ajax)

导入json对应的jar

 <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-databind</artifactId>
            <version>2.9.6</version>
        </dependency>

 

 

客户端代码

<script src="jquery.min.js"></script>
<script>
    var allFilePaths = new Array();
    for (var i = 0; i < 10; i++) {
        allFilePaths.push("xx"+i);
    }
   $.ajax({
            url : "/user/test4.action",
            type : 'POST',
            dataType: 'json',
           contentType: "application/json",
            data : JSON.stringify(allFilePaths),//转为json格式
            success : function(col) {
                alert(col)
            },error : function () {

        }
        });

</script>

  

控制层

@RequestMapping("/test4")
    @ResponseBody
    public String test4(@RequestBody List<String> macroPath ){
        System.out.print(macroPath);
        return "hello";
    }

  

接收List<User>

客户端

 var userList = new Array();
   userList.push({name: "李四",pwd: "123",age:18});
   userList.push({name: "张三",pwd: "332",age:20});
   $.ajax({
       type: "POST",
       url: "/user/test5.action",
       data: JSON.stringify(userList),//将对象序列化成JSON字符串
       dataType:"json",
       contentType : 'application/json;charset=utf-8',//设置请求头信息
       success : function(col) {
           alert(col)
       },error : function () {

       }
   });

  服务端

@RequestMapping("/test5")
    @ResponseBody
    public String test5(@RequestBody List<User> users ){
        System.out.print(users);
        return "hello";
    }

 

如果不能返回客户端内容 就转json

谷歌gson的pom.xml(版本可能会出错)

  <dependency>
            <groupId>com.google.code.gson</groupId>
            <artifactId>gson</artifactId>
            <version>2.8.4</version>
        </dependency>

 

 

 将下载好的jar重新导入

restful风格

客户端

<li>restful风格

       <a href="user/test7.action/10.action">restful风格</a>

  </li>

 服务端

 @RequestMapping("/test7/{id}")
    public String test7(@PathVariable("id") Integer id){
        System.out.println(id);
        return "hello";

    }

日期赋值

1) 定义转换器,实现接口Converter<From,To>

package com.gqk.converter;
import org.springframework.core.convert.converter.Converter;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class DateConverter  implements Converter<String, Date> {
    private SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
    public Date convert(String source) {
        try {
            return sdf.parse(source);

        } catch (ParseException e) {
            e.printStackTrace();
        }
        return null;
    }
    }

2) 注册转换器

!-- 注册转换器 -->
    <mvc:annotation-driven conversion-service="formattingConversionServiceFactoryBean"></mvc:annotation-driven>
    <bean name="formattingConversionServiceFactoryBean"
          class="org.springframework.format.support.FormattingConversionServiceFactoryBean">
        <property name="converters">
            <set>
                <!--匿名bean-->
                <bean class="com.gqk.converter.DateConverter"/>
            </set>
        </property>

    </bean>

 

3)控制器

 @RequestMapping("/test8")
    public String test7(@RequestParam("date") Date date){
        System.out.println(date);
        return "hello";

    }

 

4)客户端

<form action="/user/test8.action" method="post">

    <input type="date" name="date"><input type="submit">
</form>

  

posted @ 2020-01-08 21:01  少侠gqk  阅读(628)  评论(0编辑  收藏  举报