前言:前面我们使用的是都是模拟一个请求去访问controller,今天使用ajax发送请求。
好处:实现客户端无关性
1、index.jsp页面直接发送ajax请求进行分页数据查询。
2、服务器将查出的数据,以json字符串的形式返回给浏览器。
3、返回json实现客户无关性。
包:
<!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-databind -->
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.8.8</version>
</dependency>
controller:
@ResponseBody
@RequestMapping("allSta")//获得请求allSta就执行下面的方法
public Msg getAllStudentMessgeWith(@RequestParam(value="pn",defaultValue="1")Integer pn,Model model){
PageHelper.startPage(pn, 5);//使用myBatis分页查询。第一个值:相当于当前页,
List<Sbasicmessage> bas= basicService.getallStu();
PageInfo page=new PageInfo(bas,3);//使用pageinfo封装查询结果
model.addAttribute("pageInfo", page);
return Msg.success().add("pageInfo", page);
}
@responseBody注解的作用是将controller的方法返回的对象通过适当的转换器转换为指定的格式之后,写入到response对象的body区,通常用来返回JSON数据或者是XML。数据需要注意的呢,在使用此注解之后不会再走试图处理器,而是直接将数据写入到输入流中,他的效果等同于通过response对象输出指定格式的数据。
工具类:
package com.utils;
import java.util.HashMap;
import java.util.Map;
public class Msg {
//状态码,100:成功,200:失败
private int code;
//提示信息,操作成功或异常
private String msg;
//用户返回给浏览器的数据封装对象map
private Map<String,Object> map=new HashMap<String, Object>();
//常用的成功方法
public static Msg success(){
Msg result= new Msg();
result.setCode(100);
result.setMsg("成功");
return result;
}
//常用的失败方法
public static Msg fail(){
Msg result= new Msg();
result.setCode(200);
result.setMsg("失败");
return result;
}
//定义一个链式操作的添加方法
public Msg add(String key,Object value){
this.getMap().put(key, value);
return this;
}
public int getCode() {
return code;
}
public void setCode(int code) {
this.code = code;
}
public String getMsg() {
return msg;
}
public void setMsg(String msg) {
this.msg = msg;
}
public Map<String, Object> getMap() {
return map;
}
public void setMap(Map<String, Object> map) {
this.map = map;
}
}
index.jsp:
<script type="text/javascript">
//页面一旦加载为成,执行此方法
$(function() {
$.ajax({
url : "${APP_PATH}/allSta",
data : "pn=1",
type : "GET",
success : function(result) {
console.log("成功");
alert("操作状态码:");
}
});
});
</script>