Struts2的JSON数据处理

Struts2框架中的JSON集成与应用实践 本文还有配套的精品资源,点击获取 简介:Struts2是一个用于构建企业级Java Web应用的框架,能够通过JSON插件高效地在服务器端和客户端之间交换数据。通过示例项目"Struts2Json example",展示了如何集成JSON插件到Struts2框架中,并通过配置和Action类的设计返回JSON格式的响应。文章详细说明了如何在Struts2配置文件中添加JSO... 阅读详情

好久没使用服务端的开发了,正好最近工作中遇到了类似的问题,所以重新捡起来看看:


首先我们需要配置struts2的支持,并配置json插件。


我们的测试页面是这个样子滴:

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ taglib prefix="s" uri="/struts-tags"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">

<title>My JSP 'input.jsp' starting page</title>

<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
	<link rel="stylesheet" type="text/css" href="styles.css">
	-->

</head>

<body>
	<s:form action="16-json/jsondate.action">
		<s:textfield name="username" label="username"></s:textfield>
		<s:password name="password" label="password"></s:password>
		<s:submit value="submit"></s:submit>
	</s:form>
</body>
</html>

我们的配置文件:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
	"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
	"http://struts.apache.org/dtds/struts-2.3.dtd">
<struts>
	<package name="16-json" extends="json-default" namespace="/16-json">
		<action name="jsondate" class="com.freesoft.struts2.action.JsonDateAction">
			<result name="success" type="json">
			</result>
		</action>
	</package>
</struts>

正题:

为了配置服务端返回的类型是json数据类型,我们需要将package从json-default继承。为了返回值为json类型,我们的result的type必须是json(如果为了接受json字符串格式的参数,我们使用<interceptor-ref name="json" />)。


我们的action实现是:

package com.freesoft.struts2.action;

import java.sql.Date;
import java.util.HashMap;
import java.util.Map;

import com.freesoft.struts2.bean.JsonOutputBean;
import com.opensymphony.xwork2.ActionSupport;

public class JsonDateAction extends ActionSupport {
	private static final long serialVersionUID = 8594770813208016225L;
	
	private String username;
	private String password;
	private JsonOutputBean bean;
	private Map<String, Object> dataMap;
	
	
	public JsonDateAction() {
		super();
		dataMap = new HashMap<String, Object>();
	}

	@Override
	public String execute() throws Exception {
		dataMap.put("username", username);
		dataMap.put("password", password);		
		Date date = new Date(2012, 1, 12);
		bean = new JsonOutputBean(1, "zhangsan", date);
		dataMap.put("Bean", bean);
		
		return SUCCESS;
	}

	public String getUsername() {
		return username;
	}

	public void setUsername(String username) {
		this.username = username;
	}

	public String getPassword() {
		return password;
	}

	public void setPassword(String password) {
		this.password = password;
	}

	public JsonOutputBean getBean() {
		return bean;
	}

	public void setBean(JsonOutputBean bean) {
		this.bean = bean;
	}

	public Map<String, Object> getDataMap() {
		return dataMap;
	}

	public void setDataMap(Map<String, Object> dataMap) {
		this.dataMap = dataMap;
	}
}

这时我们实际上已经可以进行测试了,但是我们发现返回的结果是一个将action中所有属性都输出的实现(实际上是获取了所有get方法,这一点可以通过注释getBean和getName方法来验证),所以我们需要改造我们的配置文件:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
	"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
	"http://struts.apache.org/dtds/struts-2.3.dtd">
<struts>
	<package name="16-json" extends="json-default" namespace="/16-json">
		<action name="jsondate" class="com.freesoft.struts2.action.JsonDateAction">
			<result name="success" type="json">
				<param name="root">dataMap</param>
			</result>
		</action>
	</package>
</struts>

注意我们添加了一个root名字的返回值参数,这时我们可以看到,我们拿到的是dataMap这个属性的各种值,一般情况下我们在需要返回值时都是使用这种方式。



本来到这里json已经基本上讲完了,但是我们发现另外一个问题,Date类型的数据返回的是一个"date":"3912-02-12T00:00:00"这样的字符串,中间有一个"T"字符,那么我们如何去掉呢?正常情况下如果一个类型的输出内容和我们期望的不一致,我们在Struts2中需要使用一个Converter将其转换为我们需要的格式,但我们现在是使用json插件转换成我们的输出的,所以我们要想想别的办法:我们去找找json插件有没有属性之类的可配置值。


我们可以找到一个JSON注解,具体使用方法:在你需要转换的属性(Date类型)的get方法上加上下面的代码即可。

package com.freesoft.struts2.bean;

import java.util.Date;

import org.apache.struts2.json.annotations.JSON;

public class JsonOutputBean {
	private int id;
	private String name;
	private Date date;
	public JsonOutputBean(int id, String name, Date date) {
		super();
		this.id = id;
		this.name = name;
		this.date = date;
	}
	public int getId() {
		return id;
	}
	public void setId(int id) {
		this.id = id;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	@JSON(format="YYYY-mm-dd")
	public Date getDate() {
		return date;
	}
	public void setDate(Date date) {
		this.date = date;
	}
}












Struts2框架核心JAR包详解及应用 Struts2是Apache Software Foundation旗下一个用于开发Java EE Web应用的MVC框架。作为Struts的继承者,Struts2提供了更为灵活和强大的功能,它基于拦截器的处理机制,允许开发者将业务逻辑与表示层分离,从而提高了代码的可维护性和可扩展性。Struts2以其易于学习和使用的特性,广泛应用于企业级应用开发中。随着技术的不断进步,Web应用的开发框架也在持续演变。Struts2框架自推出以来,经历了多次版本迭代,不断融入新的技术元素,以适应快速变化的开发需求。 阅读详情

相关推荐

AJAX和struts2传递JSON数组

利用AJAX传递JSON数组,后台struts2的action接收。 详细代码简单易懂。

记录Struts 2 返回JSON 的三种方式

记录Struts 2 返回JSON 的三种方式最常用的返回json两种:当然这两种都不是我想记录的 最常用的返回json两种: 1.使用response的方式 public String putJson(Object obj){ PrintWriter pw = null; try{ response.setContentType("app...

落叶 1711

从零构建物联网监控系统:STM32+迪文屏+WiFi模组的实战解析

本文详细解析了基于STM32微控制器、迪文串口屏和WiFi模组构建物联网监控系统的完整方案。从硬件选型、系统架构设计到数据交互实现,提供了包括迪文屏GUI开发、STM32通信协议、低功耗优化等实战经验,帮助开发者快速掌握物联网监控系统的核心技术。

docker7nomad的博客 729

Struts2返回JSON对象

转自:微点阅读 https://www.weidianyuedu.com 如果是作为客户端的HTTP+JSON接口工程,没有JSP等view视图的情况下,使用Jersery框架开发绝对是第一选择。而在基于Spring3 MVC的架构下,对HTTP+JSON的返回类型也有很好的支持。但是,在开发工作中,对功能的升级是基于既定架构是很常见的情况。本人碰到需要用开发基于Struts2的HTTP+JSON返回类型接口就是基于既定框架结构下进行的。 Struts2返回JSON有两种方式:1.使用Servl..

ysds20211402的博客 1258

Comsol 超声空化气泡仿真

当液体中受到高能量的超声波作用时,液体中的压力会发生剧烈变化,形成局部的低压区域。当液体中的压力降低到饱和蒸汽压以下时,就会发生空化现象,即液体中形成微小气泡。这种空化常用于一些工业应用,如清洗、乳化、混合等。这种空化常用于一些医学和生物学应用,如碎石术、肿瘤治疗、细胞破碎等。超声空化的应用非常广泛。在医学领域,超声空化广泛应用于诊断和治疗,如超声造影、超声刀、超声碎石术等。在工业领域,超声空化可用于清洗、乳化、混合等工艺。此外,超声空化还在食品加工、化学合成、环境保护等领域有着重要应用。

声学黑洞仿真工作室 2556

Canoe主要功能的详细介绍

CANoe是德国Vetor公司推出的一款用于总线开发的设备,全程为CAN open environment。后来随着总线技术的发展,CANoe不仅限于CAN类型的总线开发,还包含LIN、FlexRay、MOST和以太网等开发。在车载网络和ECU开发、测试和分析方面,CANoe几乎长期占据着垄断地位,当然是因为其强大的功能性了。目前用这个工具的主要是整车厂和供应商的网络设计工程是、开发工程师和测试工程师。小编当时安装CANoe的时候也是花了一定的时间和精力,好在没有崩溃。

车载测试 3723

struts2中JSON的使用

struts2使用JSON有三部 一:action中的方法 public String list() { commentsList = commentsService.getAllCommentsByFoodsId(id); return "list"; } 二:struts.xml文件的配置 配置的包必须继承json-default

qq_36722039的博客 869

Unity零基础到进阶 | Unity 探针系统深度解析:光照探针、反射探针与相关技术

在 Unity 渲染管线中,探针(Probe) 是一类通过预计算或实时采样来捕捉空间光照信息的核心组件。它们弥补了传统静态光照贴图和实时光源各自的局限性,是实现高质量、高性能全局光照效果的关键工具。 本文将系统介绍光照探针(Light Probe)和反射探针(Reflection Probe)的作用与用法,分析二者之间的协同关系,并延伸介绍自适应探针体积(APV)、光照探针代理体(LPPV)、探针体积等进阶技术。

努力前行,总会成为自己心中的那道光 1万+

struts2中实现返回json格式请求

struts2作为一个mvc框架,请求一个方法,返回一个页面,当post请求成功之后,跳转到success页面,大多数情况下能够满足我们的要求,但是web开发中ajax技术的使用是不可避免的,我们知道ajax请求大多数情况下需要的数据是json格式。我们如何让struts这个mvc框架作为一个restful服务器,提供rest api,显得尤为重要,虽然这时候不能完全体现mvc框架的职能。 st...

feinifi的博客 2万+

S7-200SMART 中如何实现单按钮启停功能(两种方法)?

S7-200SMART 中如何实现单按钮启停功能(两种方法),Toggle库指令,状态翻转

Robot_PLC_HMI_Automation 1万+

【2024年5月备考新增】《2024高项论文精华版(5)项目工作绩效域和度量绩效域》

3、专注于工作过程和能力。③专注于工作过程和能力。1、制定有效的度量指标。2、度量内容及相应指标。3、展示度量信息和结果。4、管理沟通和参与。7、监督新工作和变更。①制定有效的度量指标。②度量内容及相应指标。③展示度量信息和结果。5、基于度量进行诊断。

Else 的博客 1268

struct2 如何返回 JSON 数据 (最最简单的方式,使用 stuct2-json-plugin 即可)

文章目录一、爬坑之路二、环境搭建2.1 stuct2 的 pom 依赖2.2 开发工具配置三、代码编写3.1 编写 AjaxAction3.2 前端页面编写3.3 struct2 配置文件编写3.4 运行效果图 一、爬坑之路 困扰了我很久的问题终于解决了!!! 今天记录一下 网上我查阅过许多 struct2 返回 JSON 数据格式的方式,比如使用 Servlet 阶段的 PrintWriter,还有自己转换成 InputStream 流返回 JSON 数据,甚至还有自己封装 JSON 格式数据的。 但

欢迎来到Gorit的博客 1158

嵌入式数字信号处理器(DSP)高频面试题及参考答案

数字信号处理器(DSP)是一种专门设计用于执行数字信号处理任务的微处理器。它具有高度优化的架构,能够高效地执行复杂的数学运算,如快速傅里叶变换(FFT)、卷积、滤波和其他信号处理算法。DSP通常具有高速的中央处理器、专用的硬件乘法器、累加器、硬件循环支持和高速的内存访问能力,以满足实时信号处理的需求。通信:用于调制解调、语音编码、数据压缩、加密和解密。音频处理:如音乐合成、音效增强、语音识别和语音合成。视频和图像处理:包括图像压缩、视频编码、图像增强和模式识别。生物医学工程。

大模型大数据攻城狮的专栏 5267

struts2+json/ajax

如果只需要返回一个字符串或其他文本信息,则: &lt;result type="stream"&gt;                                     &lt;param name="contentType"&gt;text/html&lt;/param&gt;                                     &lt;param name="...

阿O、不拽 154

YOLOv9分割改进 ,YOLOv9分割改进主干网络为华为EfficientNet,助力涨点

EfficientNet论文中研究了卷积网络的缩放和,并证明对深度,宽度和分辨率复合缩放的重要性,因此精度和效率更好。为了阐述相关的原理,我们提出了简单有效的复合缩放方法,使得模型缩放具有一定设计准则,同时兼顾了模型的效率。我下文将 YOLOv9 分割模型改进主干网络为 EfficientNet 融合网络结构。论文地址代码地址下文都是手把手教程,跟着操作即可添加成功把环境配置好,数据集处理好,训练基本能成功,创作不易,请帮忙点一个爱心,关注我,带你不挂科!

在职AI算法工程师,擅长计算机视觉,YOLO目标检测、分割等,擅长web、pyqt界面可视化,好内容持续更新中,来这里跟大家一起学习,共同进步 938

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

struts2+json(1)

http://www.cnblogs.com/wuyifu/archive/2013/05/11/3073047.html我的补充:在struts2的基础上 配置 struts2还需要的包:commons-lang-2.4.jar;json-lib-2.3-jdk13.jar;jsonplugin-0[1].32.jar;ezmorph-1.0.2.jar;commons-b...

weixin_33910385的博客 76

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

Struts2 将EXTJS Json解析为List数据

JSON是和JavaScript门当户对的数据传输方式,所以用起来会很舒服。而且他可以很方便的传递对象,EXT也对JSON支持的很全面。所有的数据传递需求他都可以胜任。     所以将json对象传输到后台后解析为对应的Java对象也就变得重要,json-lib包里封装了改解决方法,但今天介绍Struts2种将json解析为Java对象的方法,以List为例。 代码如下: //EXTJS中的...

weixin_41045798的博客 184

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

深入了解Struts2返回JSON数据的原理

首先来看一下JSON官方对于“JSON”的解释: JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。易于人阅读和编写。同时也易于机器解析和生成。它基于JavaScript Programming Language, Standard ECMA-262 3rd Edition - December 1999的一个子集。 JSON采用完全独立于语言的文本格...

weixin_30814319的博客 107

jquery,json,struts2整合开发(实现下拉列表)

jquery          Jquery是继prototype之后又一个优秀的Javascrīpt框架。它是轻量级的js库(压缩后只有21k) ,它兼容CSS3,还兼容各种浏览器 (IE 6.0+, FF 1.5+, Safari 2.0+, Opera 9.0+)。jQuery使用户能更方便地处理HTML documents、events、实现动画效果,并且方便地为网站提供AJAX交互。j

fupeng1114的专栏 2707

Struts2+jquery实现下拉菜单联动

    利用jquery实现了一个菜单(select)联动,属转帖    在实现之前,需要让struts2支持json格式的数据。这里需要一个插件jsonplugin-0[1].32.jar。中间的32表示支持struts2.0.x。如果使用struts2.1以上,则需要jsonplugin-0[1].34.jar。然后在struts.xml中配置如下:               

pathfinder 4025

当struts2遇上json.

这几天想用jquery做点东西,  由于我的后台架构是SSH2的, 所以难免要用jquery和struts2打交到.  当然他们直接的交流语言首选当然是json了. 由于以前做过extjs的项目, 所以对json的数据结构还是比较了解地,呵呵. 开始步入正题:  先说说web端吧, jquery的ajax是支持json格式的, 例如: $.getJSON("test.js", function(...

jhacker7的专栏 155

struts2 action json(还有servlet的)

struts2 action json(还有servlet的) http://yshjava.iteye.com/blog/1333104 留着 版权声明:本文为博主原创文章,未经博主允许不得转载。 ...

weixin_30371469的博客 67

return none java struts2,struts2乱码与json插件[转]

在前一篇中 ,讲到了解决在struts2中出现的一点点乱码问题,就想看看json中的数据处理方式.由struts2的处理流程来看,主要处理result的代码如下在defaultActionInvocation中:Java代码 privatevoidexecuteResult()throwsException{result=createResult();StringtimerKey="ex...

weixin_42311335的博客 168

struts2+json+jquery做联动

在网上找了些资料,调试出来。总结如下:1. jquery包导入:jquery-1.2.6.min.js2.在页面写上这句:  3.自己写的JavaScript如下: function getMDepartment(){                   var citycode = $("select[name=citycode]").val();            

huanggege10的学习历程 9822

Struts2+JSON+prototype使用说明

Ajax技术用了一段时间了,用了几个ajax框架,也写过没有用ajax框架的程序,总体感觉prototype简单易用,因此写一下使用说明 1.下载Strutes2的JSON插件:jsonplugin-0.19.jar 2.添加一个JSON的action import com.googlecode.jsonplugin.annotations.JSON;import com.opensymph...

largestone 154

Struts2返回JSON对象总结

Struts2返回JSON对象总结  1.导入jsonplugin包   Struts2.1.6:导入jsonplugin-0.34.jar包(下载包)和commons-logging-1.0.4.jar(Struts2 lib下有)   Struts2.1.8导入struts2-json-plugin-2.1.8.1.jar(Struts2 lib下有)   Struts2.2.

ming070423的专栏 511
上一篇: 处理HTTP请求并返回JSON数据的类
下一篇: IOS开发学习笔记(一)——ObjectC语言快速入门
Soloman
博客等级 码龄25年 171粉丝 159原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值