`

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

阅读更多
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'/>
1
0
分享到:
评论

相关推荐

    jenkins二次开发

    ### Jenkins二次开发详解 #### 一、安装与配置 Jenkins作为一款开源的持续集成工具,在软件开发领域中被广泛采用。二次开发是指基于现有的Jenkins系统进行功能扩展或定制化改造的过程。根据提供的文件信息,我们...

    Android开发 心电图绘制

    可能需要涉及到二进制流解析、JSON或XML解码等技术。 2. **绘制背景**:心电图的背景可能需要特定的图案或颜色,这可以通过在onDraw()方法中使用canvas.drawColor()或canvas.drawBitmap()来实现。如果需要格线或者...

    struts2源码

    源码分析是深入理解框架工作原理、优化代码以及进行二次开发的重要途径。以下是关于Struts2源码的详细解析。 1. **核心架构** Struts2的核心组件包括Action、Interceptor、Result、Plugins等。Action负责业务逻辑...

    利用java 后台导出Flex DataGrid为Excel

    - 数据转换:Java需要将接收到的Flex DataGrid的数据结构(可能是JSON或XML)解析成Java对象,例如List, Object&gt;&gt;。 - Excel生成:使用Apache POI库,这是一个强大的API,允许我们在Java中创建、修改和操作...

    研磨Struts2

    - **执行**:调用Action中的execute()方法,执行具体的业务逻辑。 - **销毁**:Action执行完毕后,会被框架销毁。 #### 3.3 自定义Action - **实现接口**:可以通过实现Action接口来创建自定义的Action。 - **注解...

    jquery 分页和验证(java版)

    5. **服务器端验证**:尽管客户端验证提高了用户体验,但为了防止恶意篡改,服务器端仍需进行二次验证。在SSH框架中,Struts2的Action类可以接收并验证表单数据,如果无效则返回错误信息。 总的来说,这个实例展示...

    SSH+jQuery+Ajax框架做的地区选择

    在Ajax请求中,服务器返回的地区数据通常以JSON格式发送,因为JSON可以直接被JavaScript理解和操作,提高了数据传输效率和处理速度。 **三级联动** 指的是在选择一个选项时,其他相关选项会根据所选内容动态更新。...

    struts2工程核心包

    4. 当所有拦截器执行完毕后,调用Action的execute方法执行业务逻辑。 5. Action执行完成后,根据配置的Result类型决定如何响应用户,可能是一个JSP页面、一个静态资源或者JSON数据。 6. 最终,响应返回给客户端,...

    extjs帮助文档

    - `Ext.Array.indexOf(array, value[, fromIndex])`:返回数组中元素第一次出现的位置。 - `Ext.Array.contains(array, value)`:检测数组中是否包含某个值。 #### 三、Number类(第4页) - **概述**:Number类...

    ext导出grid

    在处理数据时,如果某列指定了`renderer`函数,则会调用该函数来格式化数据显示。这对于需要特殊格式化的数据非常有用,比如日期、货币等。 2. **表头与数据的构建**: 表头和数据都以特定格式的JSON字符串形式...

    java面试资料

    5. **业务逻辑处理:** Action或DispatchAction执行相应的业务逻辑处理,并通过调用模型层(如数据库操作)获取数据。 6. **返回结果:** 最终处理结果会被封装为一个Model对象,ActionServlet将此结果传递给指定的...

    PHP+jQuery大事记.7z

    1. 数据交互:PHP处理服务器端逻辑,如数据库操作、业务逻辑等,通过Ajax调用返回数据到客户端。jQuery提供$.ajax()或$.getJSON()等方法,使得异步请求变得简单。 2. 前后端分离:PHP负责生成HTML结构,jQuery负责...

    js共享 js 问题

    为了方便前端处理这些数据,可以先将JSON数组转换成字符串并存储起来,之后再在JavaScript中解析使用。 #### 四、页面链接与导航 **5. 设置默认目标** ```html ``` **知识点:** - **`&lt;base&gt;`标签**: 定义...

    java面试知识

    - **JSON**:轻量级数据交换格式,易于人阅读和编写,同时也易于机器解析和生成。 ##### request.getSession()、reqeust.getSession(false)和request.getSession(true) - **request.getSession()**:如果没有会话...

    软件测试面试总结

    - 可复用Action:可在多个测试中多次调用。 - 不可复用Action:仅在单个测试中使用,不可跨测试共享。 - 外部Action:存储于独立文件中,可被多个测试项目引用。 #### TestDirector的软件测试管理功能 ...

    Java工程师面试宝典

    - **Action**:处理请求并返回结果。 ##### 9.5 Hibernate框架 - **对象关系映射**:简化了Java应用程序与关系型数据库之间的交互。 - **延迟加载**:只在需要时加载数据。 #### 补充 ☆9.6 SpringBoot - **特性...

    Jmod-Tracker-backend:Jmod Tracker的Rails API

    2. 分页(Pagination):使用`kaminari`或`will_paginate`库进行分页,避免一次性返回大量数据,提高性能。 3. 响应缓存(Response Caching):通过`caches_action`或`cache_store`配置实现API响应的缓存,降低...

    python入门到高级全栈工程师培训 第3期 附课件代码

    05 js练习之二级联动 06 jquery以及jquery对象介绍 07 jquery选择器 08 jquery的查找筛选器 09 jquery练习之左侧菜单 第44章 01 jquery属性操作之html,text,val方法 02 jquery循环方法和attr,prop方法 03 jquery...

Global site tag (gtag.js) - Google Analytics