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;
}