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>