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>

浙公网安备 33010602011771号