08 03Struts 2.x与Ajax

文章目录

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使用过滤器完成处理。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值