二次调用action,使用json解析设备返回的数据

20 篇文章 0 订阅
1 篇文章 0 订阅
web服务器与某台设备通信,web服务器向设备发出http请求,设备返回文本数据,把返回的数据封装进ActionContext中,使用chain二次调用action

返回数据的格式(实际没有回车换行):
deviceName=device01
--separator--waveDataList[0].channelNo=1
--separator--waveDataList[0].channelData = "1111111,2222222,3333333,4444444"
--separator--waveDataList[1].channelNo="2"
--separator--waveDataList[1].channelData = "1111111,2222222,3333333,4444444"
--separator--waveDataList[2].channelNo="3"
--separator--waveDataList[2].channelData = "1111111,2222222,3333333,4444444"


1.向设备发送请求
2.设备返回数据

/** Action1*/

// 这里定义的和设备返回的数据必须对应
private String deviceName;
private List<DyWave> waveDataList;

// 请求设备,并且接收设备返回的字符串
String receiveString = RemoteDeviceUtil.getRemoteDyWave(deviceInfo.getDiip(), deviceInfo.getDinetPort());

//分割数据
String[] array = receiveString.split(Const_val.C_STR_WAVE_DATA_SEPARATOR);

// 把数据放进ActionContext
if (null != array) {

ActionContext ctx = ActionContext.getContext();

Map<String, Object> map1 = new HashMap<String, Object>();

for (String string : array) {

String[] arr = string.split(Const_val.C_STR_EQ_SEPARATOR);

map1.put(arr[0], arr[1]);

}
ctx.setParameters(map1);
}
...
...

/** Action2*/
JSONArray jsonData = JSONArray.fromObject(waveDataList);
if (null != jsonData) {
// 这个json变量用于js画图
this.jsonData = jsonData.toString();
} else {
this.jsonData = "";
}
...
...


3.用于画图的jsp

$(document).ready(function(){
var jsonData = '<s:property value='jsonData' escape='false'/>';

var obj = eval("(" + jsonData + ")");

$.each(obj, function(idx,item){
drawChart1(item.channelNo,"", item.channelData, "","","",item.channelNo);
});

});


4.struts配置

<action name="getDyWaveData" class="UserDyWaveAction" method="getDyWaveData">
<result type="chain" name="success">getWarpDyWaveData</result>
</action>

<action name="getWarpDyWaveData" class="UserDyWaveAction" method="getWarpDyWaveData">
<result name="success">/JSP/user/UserMonitorDyWave.jsp</result>
</action>


在ajax中如果只想获得json对象,可以返回一个如下的jsp

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="GBK"%>
<%@taglib prefix="s" uri="/struts-tags"%>
<s:property value='jsonData' escape='false'/>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值