SpringMVC的异步调用

原生javascript发送异步请求

<!-- href="javascript:void(0);"
让超链接去执行一个js函数,而不是去跳转到一个地址,
而void(0)表示一个空的方法,也就是不执行js函数。
如果写href="#" 则页面会回到顶部-->
<a href="javascript:void(0);" id="testAjax">访问controller</a>
<script type="text/javascript" src="/js/jquery-3.3.1.min.js"></script>
<script type="text/javascript">
	$(function(){
	//为id="testAjax"的组件绑定点击事件
	$("#testAjax").click(function(){
		//发送异步请求
		$.ajax({
			type:"POST",//请求方式
			url:"ajaxController",//请求地址
			data:'ajax message',//请求参数(也就是请求内容)
			dataType:"text",//响应正文类型
			contentType:"application/text"//请求正文的MIME类型			
			});
		});
	});
</script>

接受异步请求参数

  • @ResquestBoby:可以将异步提交的数据组织成标准请求参数格式,并赋值给形参
@RequestMapping("/ajax")
public String ajax(@RequestBody String message){
	System.out.println(message);
	return "page.jsp";
}
  • 注解添加到Pojo参数前方时,封装的异步提交数据按照Pojo的属性格式进行关系映射
@RequestMapping("/ajaxPojoToController")
//如果处理参数是POJO,且页面发送的请求数据格式与POJO中的属性对应,@RequestBody注解可以自动映射对应请求数据到POJO中
//注意:POJO中的属性如果请求数据中没有,属性值为null,POJO中没有的属性如果请求数据中有,不进行映射
public String  ajaxPojoToController(@RequestBody User user){
    System.out.println("controller pojo :"+user);
    return "page.jsp";
}
  • 注解添加到集合参数前方时,封装的异步提交数据按照集合的存储结构进行关系映射
@RequestMapping("/ajaxListToController")
//如果处理参数是List集合且封装了POJO,且页面发送的数据是JSON格式的对象数组,数据将自动映射到集合参数中
public String  ajaxListToController(@RequestBody List<User> userList){
    System.out.println("controller list :"+userList);
    return "page.jsp";
}

异步请求接受响应数据

  • 方法返回值为Pojo时,自动封装数据成json对象数据
@RequestMapping("ajax4")
@ResponseBoby
public User ajax4(){
	User user = new User();
	user.setName("Jock");
	user.setAge(40);
	return user;
}

  • 方法返回值为List时,自动封装数据成json对象数组数据
@RequestMapping("/ajax5")
@RequestBoby
public List ajax5(){
	User user = new User();
	user.setName("Tom");
	user.setAge(3);

	User user1 = new User();
	user1.setName("jerry");
	user1.setAge(2);
	
	ArrayList al = new ArrayList();
	al.add(user);
	al.add(user1);
	return al;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值