Struts2框架异步获取数据

  1. 通过流的方式传递,可以用来传递简单数据,适合于无结构,简单的字符串信息等
    (1) 需要在Action类中添加一个InputStream属性,将异步请求处理要响应的结果内容转换成输入流提供给框架,框架会间接通过输出流响应给浏览器
public class StreamAjaxAction {
   private String uname;
   private InputStream inputStream;
   public String doAjax() {
   	String msg = "";
   	if (uname.trim().equals("bbb")) {
   		msg = "用户名已占用!";
   		inputStream = new ByteArrayInputStream(msg.getBytes());
   	} else {
   		msg = "用户名可用!";
   		inputStream = new ByteArrayInputStream(msg.getBytes());
   	}
   	return "success";
   }
   public String getUname() {
   	return uname;
   }
   public void setUname(String uname) {
   	this.uname = uname;
   }
   public InputStream getInputStream() {
   	return inputStream;
   }
   public void setInputStream(InputStream inputStream) {
   	this.inputStream = inputStream;
   }
}

(2) 在struts.xml文件中的<action>标签下配置标签,type值为stream``

	<action name="DoAjax" class="action.StreamAjaxAction" method="doAjax">
   		<result name="success" type="stream">
   		<!-- 流异步时的固定用法-->
   			<param name="contentType">text/html</param>
   		<!-- inputStream为在action类中封装的属性名-->
   			<param name="inputName">inputStream</param>
   		</result>
   	</action>

前端发送异步请求演示
2. json数据异步传输,适合传递复杂结构的参数
(1) 先导入框架提供的json包
(2) 在Action类中添加一个复合类型的属性,用来存放异步响应数据,框架会自动转为json数据

public class AjaxJsonAction {
   private List<User> users;

   public String ajaxJson() {
   	users = new ArrayList<User>();
   	users.add(new User(1, "aaa", "123"));
   	users.add(new User(2, "bbb", "456"));
   	users.add(new User(3, "ccc", "789"));
   	return "success";
   }

   public List<User> getUsers() {
   	return users;
   }

   public void setUsers(List<User> users) {
   	this.users = users;
   }
}

(3) 配置异步json的xml配置,action标签所在的包需要继承json-default,此包继承自struts-default

<package name="json" namespace="/" extends="json-default">
		<action name="ajaxJson" class="action.AjaxJsonAction" method="ajaxJson">
   		<result name="success" type="json">\
   		<!-- 单层简单属性过滤使用root -->
   			<!--<param name="root">users</param>-->
   			<!-- 哪些属性需要传递,users为list集合,d+为集合的任意下标 -->
   			<param name="includeProperties">users\[\d+\]\.user,users\[\d+\]\.password</param>
   			<!-- 哪些属性不进行传递 -->
   		<!-- 	<param name="excludeProperties">users\[\d+\]\.user,users\[\d+\]\..password</param> -->
   			<!-- 过滤空值,空值不进行传递 -->
   			 <param name="excludeNullProperties">true</param> 
   		</result>
   	</action>
	</package>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值