一、实验环境

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/jsonActionhttp://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的数据交互的更多相关文章

  1. HTML和JSON的数据交互-jsonp跨域

    HTML和json的数据交互 <!DOCTYPE html> <html> <head> <script src="//ajax.googleapi ...

  2. HTML和JSON的数据交互-HTML模板

    直接上源码,原文http://www.zhangxinxu.com/wordpress/2012/09/javascript-html-json-template/ <!DOCTYPE html ...

  3. 测开之路一百五十四:ajax+json前后台数据交互

    在实际工作中,前后端数据交互大部分都是用的json格式,后端把数据处理完后,把json传给前端,前端再解析 项目结构 models里面加入把数据转为字典的方法 from datetime import ...

  4. springmvc+json 前后台数据交互

    1. 配置(1) 文件配置参考这里(2) 导入jackson相关包:jackson-annotations-2.9.4.jar,jackson-core-2.9.4.jar,jackson-datab ...

  5. Struts2 返回 json 格式数据

    最近由于工作原因,没时间更新,那些没能看到的同学,很抱歉了,话不多说,继续写~~ 关于json的返回需要用到一个工具包来将书转换为json格式,在此用到的jar包为: import net.sf.js ...

  6. Android PHP 通过JSON进行数据交互

    一.首先是Android客户端解析PHP返回的JSON数据 1.PHP代码(这里用到了数据库,如果没有准备数据库的话,可以自定义字符串) <?php $link=mysql_connect(SA ...

  7. Struts2+JQuery+JSON实现异步交互

    1.环境 jquery:jquery-1.9.0.min.js struts2:基本包就不说了,就说说应用json的包,主要有struts2-json-plugin-2.3.8.jar json:js ...

  8. struts2使用json返回数据,报错:Parent package is not defined: json-default - [unknown location]

    使用struts2的struts-json插件时,一直报错:找不到json-default的位置,下面是我的查错步骤: 1.将struts-json版本更改为低版本,结果还是报这个错 2.重新导入ma ...

  9. Struts2返回json格式数据踩坑记录

    事件起因 昨天提测修改冻结/解冻银行卡样式的功能,微姐测试过程中发现调用ajax请求耗时过长,今天来排查,发现浏览器请求/finance/ajax/freeze/ajaxGetShopLists时,对 ...

随机推荐

  1. Nunit与Vs 2012配合使用

    要使用Nunit首先要去官网 http://www.nunit.org/ 下载Nunit.win  .msi是安装版.   bin  .zip是绿色版. 下载完后安装. 在 VS2012 中使用 Nu ...

  2. 基于Woodstox的StAX 2 (Streaming API for XML)解析XML

    StAX (Streaming API for XML)面向流的拉式解析XML,速度快.占用资源少,非常合适处理大数据量的xml文件. 详细教程和说明可以参见以下几篇文章: 使用 StAX 解析 XM ...

  3. Java的indexOf返回的是第一个匹配到的字符的索引位置,substring(a,b)获得字符串的一部分内容

    背景:我要实现一个功能,需要匹配两个字符串是否有相同的字符,所以就写了下面一个小方法,定义两个字符串a和b,循环遍历 b,如果a中有b的子串就将匹配数量num+1   遇到的问题:开始判断字符串中是否 ...

  4. javascript 中 if (window != top) top.location.href = location.href;的意思

    如果当前窗口不是顶级窗口,就强制修改为顶级窗口: 目的是为了不让别人用iframe嵌入你的页面

  5. 超薄二维Mo2C晶体

    记者今天从中国科学院金属研究所获悉,该所沈阳材料科学国家(联合)实验室先进炭材料研究部任文才研究组在大尺寸高质量二维过渡族金属碳化物晶体的制备与物性研究方面取得了重要突破.相关成果日前在<自然— ...

  6. 慕课网access_token的获取(下)

    接口调用返回的结果是两个字段:access_token和expires_in,所以需要创建一个实体类封装这两个字段 运行测试类WeixinTest.java控制台打印出错误信息 重置开发者密钥试试看 ...

  7. Excel Sheet Column Title (STRING - TYPE CONVERTION)

    QUESTION Given a positive integer, return its corresponding column title as appear in an Excel sheet ...

  8. python连接redis,redis集群

    python连接redis: import redis r = redis.Redis(host='192.168.50.181',port=6002) r.set('user_phone_14900 ...

  9. Linux xxd命令

    一.简介 xxd 命令用于使用二进制或十六进制格式显示文件内容,可以将指定文件或标准输入以十六进制转储,也可以把十六进制转储转换成原来的二进制形式. 二.选项 http://www.cnblogs.c ...

  10. Nginx详解(正向代理、反向代理、负载均衡原理)

    Nginx配置详解 nginx概述 nginx是一款自由的.开源的.高性能的HTTP服务器和反向代理服务器:同时也是一个IMAP.POP3.SMTP代理服务器:nginx可以作为一个HTTP服务器进行 ...