struts2的ajax处理
1. 使用ServletApi实现ajax
JSP页面
<body> <input type="button" id="btn" value="获取数据" /> <h3 id="msg"></h3> </body>
<script type="text/javascript" src="js/jquery-3.1.1.min.js"></script> <script type="text/javascript"> $(function(){ $('#btn').click(function(){ $.post("ajax.action",function(data){ $('#msg').html(data); }); }); }); </script> |
AjaxAction
publicclass AjaxAction { public String execute() throws IOException{ HttpServletResponse response=ServletActionContext.getResponse(); response.setCharacterEncoding("utf-8"); response.getWriter().write("这是获取的信息"); returnnull; } } |
struts.xml
<action name="ajax" class="com.zys.action.AjaxAction"> </action> |
2. 使用struts2插件来实现ajax处理(返回json格式数据)
需要导入的jar包:
ezmorph-1.0.6.jar
commons-beanutils-1.8.0.jar
commons-collections-3.2.2.jar
commons-lang-2.4.jar
commons-logging-1.1.3.jar
json-lib-2.3-jdk15.jar
struts2-json-plugin-2.3.32.jar
JSP页面
<body> <input type="button" id="btn" value="获取JSON数据" /> <table width="80%" align="center"> <tr> <td>姓名</td> <td>年龄</td> </tr> <tbody id="content"> </tbody> </table> </body>
<script type="text/javascript" src="js/jquery-3.1.1.min.js"></script> <script type="text/javascript"> $(function(){ $('#btn').click(function(){ $.post("json.action",function(data){ var html=""; for(var i=0;i<data.length;i++){ html+="<tr><td>"+data[i].name+"</td><td>"+ data[i].age+"</td></tr>"; } $('#content').html(html); },'json'); }); }); </script> |
struts.xml
<package name="jsonDemo" extends="json-default" > <action name="json" class="com.zys.action.JsonAction"> <result type="json"> <param name="root">root</param> </result> </action> </package> |
注意:如果在struts.xml中创建多个包,包名不能和其他的重复; 使用JSON插件需要继承”json-default”; result类型要设置为”json”; param的name参数要设置为”root”,值可以自己设置,但是在action类中JSONArray的变量名要与之一致,并且要有其get方法。
JsonAction类
publicclass JsonAction { privateJSONArray root; public String execute(){ List<User> list=new ArrayList<User>(); list.add(new User("张三",12)); list.add(new User("李四",12)); list.add(new User("王五",12)); //将list转换为JSON格式数据 root=JSONArray.fromObject(list); return"success"; }
public JSONArray getRoot() { System.out.println("调用了getRoot方法"); returnroot; }
publicvoid setRoot(JSONArray root) { System.out.println("调用了setRoot方法"); this.root = root; } } |