Ajax就是web页面的一种异步传输方法。不论它在怎么牛,无非也是页面发送请求,服务端处理请求,所以不管是Servlet 还是Spring MVC ,对与页面发送异步传输请求来说没什么区别。所以页面脚本该怎么写还是怎么写,而服务端也是一样。只不过服务端不用返回页面,所以处理请求的方法的返回值为null即可,或者不要返回值。而方法内容可以按照Servlet的写法来写,即用PrintWriter来输出字符串或XML文本。。。
页面代码如下,这里使用的是jQuery:
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<html>
<head>
<title>helloworld</title>
<script type="text/javascript" src="/spring_mvc/js/jquery.js"></script>
<script type="text/javascript">
$(function(){
$("#testButton").click(function(){
var $a = $(this);
$.ajax({
url:"/spring_mvc/testAjax.do",
type:'post',
data:'name=admin&password=123456',
dataType:'html',
success:function(data,status){
if(status == "success"){
var objs = jQuery.parseJSON(data);
var str = "";
for(var i=0;i<objs.length;i++){
str = str + objs[i].activityName+" ";
}
$("#content").html(str);
}
},
error:function(xhr,textStatus,errorThrown){
}
});
});
});
</script>
</head>
<body>
<button id="testButton">异步传输</button>
<div id="content"></div>
</body>
</html>
服务端代码如下:
public class TestAjaxAction implements Controller {
public ModelAndView handleRequest(HttpServletRequest request,
HttpServletResponse response) throws Exception {
response.setCharacterEncoding("UTF-8");
String name = request.getParameter("name");
String password = request.getParameter("password");
System.out.println(name+" : "+password);
PrintWriter out = response.getWriter();
List<Map<String,String>> list = new ArrayList<Map<String,String>>();
Map<String,String> m1 = new HashMap<String,String>();
m1.put("activityId", "000001");
m1.put("activityName", "阿斯蒂芬1");
Map<String,String> m2 = new HashMap<String,String>();
m2.put("activityId", "000002");
m2.put("activityName", "阿斯蒂芬2");
Map<String,String> m3 = new HashMap<String,String>();
m3.put("activityId", "000003");
m3.put("activityName", "阿斯蒂芬3");
Map<String,String> m4 = new HashMap<String,String>();
m4.put("activityId", "000004");
m4.put("activityName", "阿斯蒂芬4");
Map<String,String> m5 = new HashMap<String,String>();
m5.put("activityId", "000005");
m5.put("activityName", "阿斯蒂芬5");
list.add(m1);
list.add(m2);
list.add(m3);
list.add(m4);
list.add(m5);
String s = JSONArray.fromObject(list).toString();
out.print(s);
out.close();
return null;
}
}