zoukankan      html  css  js  c++  java
  • 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/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里用上,形式如下。

  • 相关阅读:
    华为设备SNMP配置
    Linux CP直接覆盖快速操作
    CentOS7快速安装PHP7.0指南
    Linux SSH免密码登录配置
    this的指向
    分页的模块layui
    multer中间件
    ajax实现图片上传
    MVC模式、加密、jsonwebtoken
    mongoose与express
  • 原文地址:https://www.cnblogs.com/jway1101/p/5833890.html
Copyright © 2011-2022 走看看