SSM数据响应的相关知识
一、数据直接响应的相关步骤
我们响应数据的方式由于很多如:
- ModelAndView进行参数的传递
- ServletApi进行传递
- 还可以使用注解的形式进行类对象的传递
- Model 和ModelMap的传递
这次主要是讲注解@ModelAttribute(value=" ")的直接传递如下代码所示:
public Book addBook(@PathVariable("name") String name, @ModelAttribute("webBook") Book webBook){
Book book = new Book();
book.setName(name);
bookService.save(book);
return book;
}
这里的就是使用注解@ModelAttribute(value=" ")进行的传值操作,在注解里面指定你要传到web端引用的变量名,剩下的就只用在方法体里面对 webBook 进行相应的操作就行了。
补充: 这里的注解只能对引用类型有效,对于基本类型我们对他进行操作时候是不能进行产传值操作,对于基本类型注解是采用赋值的形式,在方法体里面所进行的赋值操作是不能传递到web端,他只能网址栏里面进行相应的传参才行。
二、前后端直接响应数据不响应视图的操作
我们主要是通过JSON来进行传参来完成前后端的数据响应的.。
首先:我们需要在前端使用ajax来进行前后端之间的传递,前端代码如下:
$.ajax({
url: '${pageContext.request.contextPath}/login.do',
type: 'POST',
dataType: 'json',
success: function(a){
alert("请求成功:书号"+a.id+"书名"+a.bookName);
// 这是集合的遍历
/*$(a).each(funcation(index,el){alert(el.id+" " +el.bookName)});*/
//这是json的输出
/* var jsonStr= $.parseJSON(a);
alert(jsonStr.id+""+jsonStr.bookName);*/
},
error: function(){
alert("请求失败"+a);
}
})
这里的type:请求方式, dataType:参数类型
后端代码如下:
@RequestMapping(value="login.do" ,produces = "application/json; charset=utf-8")
@ResponseBody
public Book redata(){
// 这是引用对象的响应
Book book = new Book(1,"西游记");
// 这是集合的传递
LIst list = new List();
list.add("xxx");
list.add("yyy");
//return list;
//这是json的数据响应
String jsonStr = "{\"id\":1,\"bookName\":\"西游记\"}";
// return jsonStr;
//这是JSON的响应
return book;
}
这就是相关的操作,还有@ResponseBody这个注解加了才能进行数据的响应。