Struts2+jQuery+Json零配置实现ajax
(一)Jsp页面代码
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <% String path = request.getContextPath(); String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <base href="<%=basePath%>"> <title>My JSP 'index.jsp' starting page</title> <meta http-equiv="pragma" content="no-cache"> <meta http-equiv="cache-control" content="no-cache"> <meta http-equiv="expires" content="0"> <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"> <meta http-equiv="description" content="This is my page"> <!-- <link rel="stylesheet" type="text/css" href="styles.css" mce_href="styles.css"> --> <script type="text/javascript" src="js/jquery-1.6.1.js" mce_src="js/jquery-1.6.1.js"></script> <script type="text/javascript"> $(function(){ $("#str").click(function(){ $.ajax({ type: "post", url: "jsonTest/str.action", dataType: "json", data: {"name":"pyz","age":"30"}, beforeSend: function(XMLHttpRequest){ //ShowLoading(); $("#str").val("正在处理中..."); }, success: function(data){ alert("字符串:" + data); }, complete: function(XMLHttpRequest, textStatus){ //HideLoading(); $("#str").val("已处理完成"); }, error: function(){ //请求出错处理 alert("error"); } }); }); $("#keyValue").click(function(){ $.ajax({ type: "post", url: "jsonTest/keyValue.action", dataType: "json", data: {"name":"pyz","age":"30"}, beforeSend: function(XMLHttpRequest){ //ShowLoading(); $("#keyValue").val("正在处理中..."); }, success: function(data){ var jo = eval("("+data+")"); alert("姓名:" + jo.name + " 年龄:"+ jo.age); }, complete: function(XMLHttpRequest, textStatus){ //HideLoading(); $("#keyValue").val("已处理完成"); }, error: function(){ //请求出错处理 alert("error"); } }); }); $("#objList").click(function(){ $.ajax({ type: "post", url: "jsonTest/objList.action", dataType: "json", data: {"name":"pyz","age":"30"}, beforeSend: function(XMLHttpRequest){ //ShowLoading(); $("#objList").val("正在处理中..."); }, success: function(data){ var jo = eval("("+data+")"); var buf="" ; //遍历json返回数据 $(jo).each(function(i,item){ buf += "姓名:"; buf += item.name; buf += " 年龄:"; buf += item.age; buf += "/r/n"; }); alert(buf); }, complete: function(XMLHttpRequest, textStatus){ //HideLoading(); $("#objList").val("已处理完成"); }, error: function(){ //请求出错处理 alert("error"); } }); }); }); </script> </head> <body> <input type="button" id="keyValue" value="提交/接收数据(键值对)" /> <br> <input type="button" id="str" value="接收字符串" /> <br> <input type="button" id="objList" value="接收对象列表" /> <br> </body> </html>
(二)Action代码
package com.pyz.action; import java.util.HashMap; import java.util.Map; import net.sf.json.JSONArray; import net.sf.json.JSONObject; import net.sf.json.JSONSerializer; import org.apache.struts2.ServletActionContext; import org.apache.struts2.convention.annotation.Action; import org.apache.struts2.convention.annotation.ParentPackage; import org.apache.struts2.convention.annotation.Result; import com.opensymphony.xwork2.ActionSupport; @ParentPackage("json-default") public class JsonTestAction extends ActionSupport { private static final long serialVersionUID = 1L; //返回json格式的数据 private String result; @Action( value="/jsonTest/str", results={ @Result(name="success", type="json", params={"root","result"}) } ) public String str(){ String name = ServletActionContext.getRequest().getParameter("name"); String age = ServletActionContext.getRequest().getParameter("age"); this.result = "aaa"; return SUCCESS; } @Action( value="/jsonTest/keyValue", results={ @Result(name="success", type="json", params={"root","result"}) } ) public String keyValue(){ String name = ServletActionContext.getRequest().getParameter("name"); String age = ServletActionContext.getRequest().getParameter("age"); // //方法一,直接创建JSON对象 // JSONObject jo = new JSONObject(); // jo.element("name", name); // jo.element("age", age); // //方法二,JAVABEAN转JSON对象 // User user = new User(); // user.setName("pyz"); // user.setAge(19); // JSONObject jo = (JSONObject)JSONObject.fromObject(user); // //JSONObject jo = (JSONObject)JSONSerializer.toJSON(user);//等于上语句 //方法三,MAP转JSON对象 Map<String, Object> map = new HashMap<String, Object>(); map.put("name", "pyz"); map.put("age", 19); JSONObject jo = (JSONObject)JSONObject.fromObject(map); //JSONObject jo = (JSONObject)JSONSerializer.toJSON(user);//等于上语句 this.result = jo.toString(); return SUCCESS; } @Action( value="/jsonTest/objList", results={ @Result(name="success", type="json", params={"root","result"}) } ) public String objList(){ String name = ServletActionContext.getRequest().getParameter("name"); String age = ServletActionContext.getRequest().getParameter("age"); //方法一,直接创建JSON对象 JSONObject jo = new JSONObject(); jo.element("name", name); jo.element("age", age); JSONObject jo1 = new JSONObject(); jo1.element("name", "ty"); jo1.element("age", "29"); //同理,可以将JAVABEAN、MAP对象转换成JSON对象,再添加到JSONArray中 JSONArray ja = new JSONArray(); ja.add(jo); ja.add(jo1); this.result = ja.toString(); return SUCCESS; } public String getResult() { return result; } public void setResult(String result) { this.result = result; } public class User{ private String name; private int age; public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } } }