文章目录
1 Struts 2.x与Ajax
如果说现在要想使用Struts 2.x的Action利用异步处理实现数据输出,那么必然这个输出的方法里面是不应该有返回路径的,不会跳转。
如果要处理Ajax建议使用jQuery,将jQuery的开发包配置到项目之中。
范例:建立一个新的Action——CityAction.java
package org.lks.action;
import java.io.IOException;
import org.apache.struts2.ServletActionContext;
import com.opensymphony.xwork2.ActionSupport;
import net.sf.json.JSONArray;
import net.sf.json.JSONObject;
@SuppressWarnings("serial")
public class CityAction extends ActionSupport{
public void list(){
JSONObject all = new JSONObject();
JSONArray array = new JSONArray();
for(int i = 0; i < 10; i++){
JSONObject temp = new JSONObject();
temp.put("cid", i);
temp.put("cname", "City我-" + i);
array.add(temp);
}
all.put("citys", array);
try {
ServletActionContext.getResponse().getWriter().print(all);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
现在的Action之中只负责了核心操作的处理,当然本次是减少了业务层的使用。
范例:在struts.xml文件中配置
<package name="front" namespace="/pages/front" extends="struts-default">
<action name="CityAction" class="org.lks.action.CityAction">
</action>
</package>
此处没有所谓的跳转,并且也建立了相应的子目录。所以这个时候CityAction的完整访问路径是/pages/front/CityAction
。
随后在页面之中建立相应的显示的JS程序。
范例:定义pages/front/city_list.jsp页面
<%@ page language="java" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort()
+ path + "/";
%>
<html>
<head>
<base href="<%=basePath%>">
<meta charset="UTF-8">
<title>JQuery + Struts 2.x</title>
<script type="text/javascript" src="js/jquery-3.5.1.min.js"></script>
<script type="text/javascript" src="js/city_list.js"></script>
</head>
<body>
<div id="cityDiv">
<table border="1" id="cityTab">
<tr>
<th>编号</th>
<th>名称</th>
</tr>
</table>
</div>
</body>
</html>
随后的重点就是在city_list.js文件的使用上。
范例:编写city_list.js文件
$(function(){
$.post("pages/front/CityAction!list.action",{},function(data){
for(var i=0; i < data.citys.length; i++){
$("#cityTab").append("<tr><td>" + data.citys[i].cid + "</td><td>" + data.citys[i].cname + "</td></tr>");
}
},"json");
})
以上已经完成了最基本的异步加载操作。
通过本程序可以发现如下需要注意的问题:
(1)路径的访问问题,使用完整路径;
(2)分发处理在Struts 2.x实现很轻松;
(3)乱码问题处理麻烦,主要是因为Struts 2.x使用过滤器完成处理。