struts2和JSON的数据交互
一、实验环境
1、struts2基本包

2、json-plugin
在struts2的lib下可以找到。

3、web.xml
加入struts2

<filter>
<filter-name>struts252</filter-name>
<filter-class>org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>struts252</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
4、struts.xml
先测试一个普通的Action,确定struts正常工作了。

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.5//EN"
"http://struts.apache.org/dtds/struts-2.5.dtd">
<struts>
<!-- 开发模式(修改struts.xml不用重启服务器) -->
<constant name="struts.devMode" value="true" />
<!-- 动态action -->
<constant name="struts.enable.DynamicMethodInvocation" value="true" />
<package name="myPackage" namespace="/" extends="struts-default" >
<!-- 2.5 动态Action -->
<global-allowed-methods>regex:.*</global-allowed-methods>
<action name="jsonAction" class="com.xzw.json.action.JsonAction">
<result name="test1">index.jsp</result>
<result name="success">success.jsp</result>
</action>
</package>
</struts>
如果http://localhost:8080/struts2json/jsonAction和http://localhost:8080/struts2json/jsonAction!testJson1(testJson1是JsonAction内的一个方法能正确跳转到对应jsp,那么struts2已在工作。
二、xml方式测试。
1、配置文件
strut.xml有改变,继承的是json-default包,而json-default继承的是struts-default。这个定义在struts2-json-plugin-2.5.2.jar的struts-plugin.xml
返回类型是json。

2、Action

3、JSP/jQuery/Ajax
JSP的一个按钮

jQuery

4、结果
上面能正确输出结果。字符串内容和java对象都没有问题。需要注意,字符串与json对象之间的转换。或者说是,符合json语法的字符串转成JavaScript 对象(eval)。
三、注解方式。
1、导包
要使用注解,必须导入对应的包的

2、Action类
参照xml方式的设置。方法体与前面测试的一样。

3、测试方法
由于没有特别改变,测试只要把请求url改变就可以了。如果能和xml实验结果一致,则成功。

运行结果与预期一致。
四、优化JSON返回的结果。
如果一个Action中有多个get方法属性,那么上面得到实验会返回所有。然而,一般情况只需要部分的结果就可以了。
1、为Action增加属性

2、查看返回结果。

从这里发现,增加的get属性已经在response了。
3、不返回某些属性
使用参数excludeProperties
a.如,不需要myid;

b.使用正则表达式
去掉id结尾和list开头的。如下。

含有字符“s”的都不要。

4、只返回某些属性
使用参数includeProperties。
直接使用正则表达式作为例子。例如,只返回id结尾的。

5、注解上使用
在@Result里用上,形式如下。

struts2和JSON的数据交互的更多相关文章
- HTML和JSON的数据交互-jsonp跨域
HTML和json的数据交互 <!DOCTYPE html> <html> <head> <script src="//ajax.googleapi ...
- HTML和JSON的数据交互-HTML模板
直接上源码,原文http://www.zhangxinxu.com/wordpress/2012/09/javascript-html-json-template/ <!DOCTYPE html ...
- 测开之路一百五十四:ajax+json前后台数据交互
在实际工作中,前后端数据交互大部分都是用的json格式,后端把数据处理完后,把json传给前端,前端再解析 项目结构 models里面加入把数据转为字典的方法 from datetime import ...
- springmvc+json 前后台数据交互
1. 配置(1) 文件配置参考这里(2) 导入jackson相关包:jackson-annotations-2.9.4.jar,jackson-core-2.9.4.jar,jackson-datab ...
- Struts2 返回 json 格式数据
最近由于工作原因,没时间更新,那些没能看到的同学,很抱歉了,话不多说,继续写~~ 关于json的返回需要用到一个工具包来将书转换为json格式,在此用到的jar包为: import net.sf.js ...
- Android PHP 通过JSON进行数据交互
一.首先是Android客户端解析PHP返回的JSON数据 1.PHP代码(这里用到了数据库,如果没有准备数据库的话,可以自定义字符串) <?php $link=mysql_connect(SA ...
- Struts2+JQuery+JSON实现异步交互
1.环境 jquery:jquery-1.9.0.min.js struts2:基本包就不说了,就说说应用json的包,主要有struts2-json-plugin-2.3.8.jar json:js ...
- struts2使用json返回数据,报错:Parent package is not defined: json-default - [unknown location]
使用struts2的struts-json插件时,一直报错:找不到json-default的位置,下面是我的查错步骤: 1.将struts-json版本更改为低版本,结果还是报这个错 2.重新导入ma ...
- Struts2返回json格式数据踩坑记录
事件起因 昨天提测修改冻结/解冻银行卡样式的功能,微姐测试过程中发现调用ajax请求耗时过长,今天来排查,发现浏览器请求/finance/ajax/freeze/ajaxGetShopLists时,对 ...
随机推荐
- linux多路径配置
一.什么是多路径 普通的电脑主机都是一个硬盘挂接到一个总线上,这里是一对一的关系.而到了有光纤组成的SAN环境,或者由iSCSI组成的IPSAN环境,由于主机和存储通过了光纤交换机或者多块网卡及IP来 ...
- 播放一个wav文件
use mmsystem;SndPlaySound('hello.wav',SND_FILENAME or SND_SYNC) ///////////////////////////////////u ...
- Js 过滤emoji表情...持续补充中..
原文来自: https://www.cnblogs.com/tsjTSJ/p/7065544.html 最全最详细的用JS过滤Emoji表情的输入 在前端页面开发过程中,总会碰到不允许输入框输入e ...
- 使用ecstore-sdk开发包制作易开店和启明星模板
前言: 尽管商派官网有模板开发教程,但是诸多方面太过笼统.我等平庸之辈,纵使细心研读,潜心修炼,亦未能品味练功境界,领悟其中真谛. 商派有云,此九阳真经不用您挥刀****本人却感觉此教程令人抓狂,无人 ...
- strcpy函数;memcpy函数;memmove函数
strcpy函数实现: char* strcpy(char* des,const char* source) { char* r=des; assert((des != NULL) && ...
- 模块常用snippet
压缩,文件操作,数据库,md5,json, 压缩 import os, sys, time import zipfile # 解压 filename = 'callofdutyblackopszomb ...
- 【校招面试 之 C/C++】第3题 为什么要内存对齐?以及内存对齐的方式
1.为什么要进行内存对? 参考:https://blog.csdn.net/a369000753/article/details/51188915 所谓内存对齐,是为了让内存存取更有效率而采用的一种编 ...
- 240. Search a 2D Matrix II&&74. Search a 2D Matrix 都用不严格递增的方法
一句话思路:从左下角开始找.复杂度是o(m+n). 一刷报错: 应该是一个while循环中有几个条件判断语句,而不是每个条件判断语句里去加while,很麻烦 数组越界了.从0开始,y的最大条件应该是& ...
- [leetcode]146. LRU CacheLRU缓存
Design and implement a data structure for Least Recently Used (LRU) cache. It should support the fol ...
- Codeforces Recycling Bottles 模拟
C. Recycling Bottles time limit per test: 2 seconds memory limit per test: 256 megabytes input: stan ...