关于springMVC接收集合的解决方案(一)
目前根据个人经验来说解决springMVC后台接收前段传递json字符串的问题有两种方式:第一种:将json转为字符串传递,第二种:是使用@ResponseBody的方式。这篇文正主要及说明第一种方式。
我们需要用到的GSON jar包,GSON中提供了很方便的json格式化,无论是list集合 Map集合还是实体ben 等等,只要是合法的Object类型均能解析成json字符串,而且GSON库还给我们提供了很方便的json转为相应实体类的方法。下面我会一一介绍。
首先我们说一下springMVC接收前端传递过来的字符串,我们这里新建一个html引入jquery使用ajax的方式模拟post提交数据。具体代码如下
<script type="text/javascript">
$(document).ready(function() {
var data1 = {
"username": "test",
"password": "gz",
"books":JSON.stringify([{
"name":"十万个为什么",
"page":"111",
"number":"100"
}])
};
console.info(JSON.stringify(data1))
$.ajax({
type: "POST",
url: "http://localhost:8080/SpringSpringmvcMybatis/login",
dataType: "json",
async : true,
data: data1,
success: function(data) {
console.info(data)
}
});
});
</script>
url根据自己实际项目中的路径而定。
其次我们需要在后台接收传递过去的参数,时间问题,就在原先的工程上直接写了,这都不重要,重要事功能能不能够实现。
@ResponseBody
@RequestMapping(value = "/login",method=RequestMethod.POST)
public ModelAndView login(HttpServletRequest req,UserBean user) {
ModelAndView mv = new ModelAndView();
UserBean u = loginServiceImpl.Login(user.getUsername(),
user.getPassword());
if (u != null) {
req.getSession().setAttribute("user", u);
mv.addObject("password", u.getPassword());
}
mv.setViewName("index");
return mv;
}
public class UserBean implements Serializable {
private static final long serialVersionUID = -2682305557890221059L;
private Integer id;
private String username;
private String password;
private Double account;
private String books;
//get set 方法
}
这里面特别要注意的是这个books参数
我们怎么在要用的地方调用呢?我们可以在里面在声明一个变量为 List<book>
在books的set方法里面给这个list<book> 赋值
具体代码如下
public class UserBean implements Serializable {
private static final long serialVersionUID = -2682305557890221059L;
private Integer id;
private String username;
private String password;
private Double account;
private String books;
private List<book> booklist;
public void setBooks(String books) {
System.out.println(books);
Gson gs = new Gson();
List<book> jsonListObject = gs.fromJson(books, new TypeToken<List<book>>(){}.getType());//把JSON格式的字符串转为List
this.setBooklist(jsonListObject);
for (book book : jsonListObject) {
System.out.println(book.getName());
}
this.books = books;
}
// get set 方法
}
其中book实体类
public class book {
private int id;
private String name;
private String page;
private String number;
// get set 方法
}
这样我们就获得了一个List<book>集合,这样就很方便的我们像数据库里面插入数据,此时我们就不需要在java代码里面遍历insert插入数据,只需要调用多差查入的 mybaties 当然如果你的工程是springMVC+mybaties的架构的话就很方便的实现了。
对于GSON库我提给给大家一个地址:适合学习 https://github.com/google/gson/ 里面有详细的demo及其说明。