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'/>