SpringMVC传参——对象,字符串,数组

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

猜你喜欢

转载自blog.csdn.net/weixin_42803662/article/details/82750011