天天看點

SpringMVC傳參——對象,字元串,數組PageResult.class1,ModelAndView傳回值2,JSON傳回值---ajax-post

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包  

SpringMVC傳參——對象,字元串,數組PageResult.class1,ModelAndView傳回值2,JSON傳回值---ajax-post
<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;
	}