PageResult.class
public class PagedResult<T> {
private List<T> dataList;//数据
private int currentPage;//当前页
private int pageSize;//条数
//省略getter() setter()
}
1,ModelAndView返回值
注意: 1.必须form提交才能接收参数
2.后台接收方式—对象或参数名
前台:
<form id="form" action="<%=basePath%>/demo/list.jhtml">
<input name="pageNo" value="2" />
<input name="pageSize" value="3" />
</form>
<button class="a">aaaaaa</button>
$(".a").click(function(){
$("#form").submit();
});
后台:
@RequestMapping("/list")
public ModelAndView list(Integer pageNo,Integer pageSize){//参数也可用PageResult接收
pageNo = pageNo == null?1:pageNo;
pageSize = pageSize == null?10:pageSize;
PageHelper.startPage(pageNo,pageSize);
ModelAndView model = new ModelAndView();
model.addObject("pageNo", pageNo);
model.addObject("pageSize", pageSize);
return model;
}
2,JSON返回值---ajax-post
注意: @ResponseBody 需引入Jackson包
<dependency>
<groupId>org.codehaus.jackson</groupId>
<artifactId>jackson-mapper-asl</artifactId>
<version>1.9.13</version>
</dependency>
1,json对象参数
前台:
<button class="a">aaaaaa</button>
$(".a").click(function(){
$.ajax({
url: '${ctx}/demo/list2.jhtml',
method: "post",
data: {currentPage: 1, pageSize: 3},
dataType: "json",
success: function(res){
console.log("res", res);
}
});
});
后台:
第一种方式: 对象 / 参数名
ajax 不可加如下参数,否则后台接收不到参数
contentType: "application/json;charset=utf-8"
@RequestMapping(value="/list2")
@ResponseBody
public Map<String, Integer> list2(PagedResult<User> page){//亦可用参数名接收
int pageNo = page.getCurrentPage();
int pageSize = page.getPageSize();
System.out.println("pageNo: " + pageNo);
System.out.println("pageSize: " + pageSize);
Map<String, Integer> map = new HashMap<>();
map.put("pageNo", pageNo);
map.put("pageSize", pageSize);
return map;
}
第二种方式: 字符流
@RequestMapping(value="/list7")
@ResponseBody
public String list7(HttpServletRequest request) throws IOException{
StringBuffer sb = new StringBuffer();
InputStream is = request.getInputStream();
String xml = null;
if(null != is) {
InputStreamReader isr = new InputStreamReader(is, "UTF-8");
BufferedReader br = new BufferedReader(isr);
String s = "";
while ((s = br.readLine()) != null) {
sb.append(s);
}
br.close();
result = sb.toString();
}
return result;
}
第三种方式: 类似get方式
ajax需加上 contentType: "application/x-www-form-urlencoded"
@RequestMapping(value="/list3")
@ResponseBody
public Map<String, Integer> list3(HttpServletRequest request){
Integer pageSize = Integer.valueOf(request.getParameter("pageSize"));
Integer pageNo = Integer.valueOf(request.getParameter("currentPage"));
System.out.println("currentPage: " + currentPage);
System.out.println("pageSize: " + pageSize);
Map<String, Integer> map = new HashMap<>();
map.put("currentPage", currentPage);
map.put("pageSize", pageSize);
return map;
}
2,JSON字符串参数
前台:
注意: 前台ajax需加上 contentType: "application/json;charset=utf-8"
<button class="a">aaaaaa</button>
$(".a").click(function(){
$.ajax({
url: '${ctx}/demo/list5.jhtml',
method: "post",
data: JSON.stringify({pageNo: 1, pageSize: 3}),
contentType: "application/json;charset=utf-8",
dataType: "json",
success: function(res){
console.log("res", res);
}
});
});
后台:
注意: 参数前加@RequestBody注解
这个好像不支持参数名接收,有了解的帅哥靓妹请告知在下,蟹蟹
@RequestMapping(value="/list5")
@ResponseBody
public Map<String, Integer> list5(@RequestBody PagedResult<User> page){
int pageNo = page.getCurrentPage();
int pageSize = page.getPageSize();
System.out.println("pageNo: " + pageNo);
System.out.println("pageSize: " + pageSize);
Map<String, Integer> map = new HashMap<>();
map.put("pageNo", pageNo);
map.put("pageSize", pageSize);
return map;
}
3,数组参数
前台:
<button class="a">aaaaaa</button>
$(".a").click(function(){
$.ajax({
url: '${ctx}/demo/list8.jhtml',
method: "post",
data: {arr: ["1","2"]},
dataType: "json",
success: function(res){
console.log("res", res);
}
});
});
后台: list / 数组
@RequestMapping(value="/list8")
@ResponseBody
public List<String> list7(@RequestParam("arr[]") List<String> arr) throws IOException{
//参数亦可用String[] arr接收
return arr;
}