在struts.xml中配置json返回类型

1.JSON插件提供了一种名为json的ResultType,一旦为某个Action指定了一个类型为json的Result,则该Result无需映射到任何视图资源。因为JSON插件会负责将Action里的状态信息序列化成JSON格式的数据,并将该数据返回给客户端页面的JavaScript.

简单地说,JSON插件允许我们在JavaScript中异步调用Action,而且Action不再需要使用视图资源来显示该Action里的状态信息,而是由JSON插件负责将Action里的状态信息返回给调用页面——通过这种方式,就可以完成Ajax交互。

Struts2提供了一种可插拔方式来管理插件,安装Struts2的JSON插件与安装普通插件并没有太大的区别,一样只需要将Struts2插件的JAR文件复制到Web应用的WEB-INF/lib路径下即可。

2.package要继承json-default,因为json-default继承了struts-default,因为在json的jar包里有个struts2-json-plugin-2.3.24.1.jar,打开即可看到里面有个struts-plugin.xml,打开即可看到json-default是继承了struts-default:
原文:https://blog.csdn.net/eson_15/article/details/51332758 

3.JSON注释还支持如下几个域:

serialize:设置是否序列化该属性

deserialize:设置是否反序列化该属性。

format:设置用于格式化输出、解析日期表单域的格式。例如"yyyy-MM-dd‘T‘HH:mm:ss".

4.Struts2中json的使用总结

https://blog.csdn.net/z69183787/article/details/49867623?utm_source=blogxgwz0

root参数:从返回结果中根据ognl表达式取出你需要输出的结果

  部分使用示例

struts.xml

<package name="json" extends="json-default" namespace="/">

    <action name="user"  class="com.Zicheng.Action.UserAction" method="testByAction">

        <result name="success" type="json">

            <!-- 这里指定将被Struts2序列化的属性,该属性在action中必须有对应的getter方法 -->

            <param name="root">dataMap</param>

        </result>

    </action>

</package>

  

UserAction.java

public class UserAction extends ActionSupport {

    private Map<String, Object> dataMap;

      public UserAction()

      {

          dataMap=new HashMap<String,Object>();

      }

    public String testByAction() {

        // dataMap中的数据将会被Struts2转换成JSON字符串,所以这里要先清空其中的数据

        dataMap.clear();

        User user = new User();

        user.setId("123");

        user.setName("JSONActionStruts2");

        user.setPassword("123");

        user.setSay("Hello world !");

        dataMap.put("user", user);

        // 放入一个是否操作成功的标识

        dataMap.put("success", true);

        // 返回结果

        return SUCCESS;

    }

    /**

     * Struts2序列化指定属性时,必须有该属性的getter方法,实际上,如果没有属性,而只有getter方法也是可以的

     * @return

     */

    public Map<String, Object> getDataMap() {

        return dataMap;

    }

5配置中遇到的问题

一、Could not find action or result There is no Action mapped for namespace / and action name . - [unknown location]

经过再三查找,最后确定是因为缺少一个包struts2-json-plugin-2.2.3.jar.

下载到这个包,此错误消息。

接下来遇到错误

二、java.lang.NoClassDefFoundError: org/apache/commons/lang/StringUtils

网上搜一下,缺少的是common-lang包。找一个加入进去,搞定不报错了,开心呀。

三、但是一看页面上显示的是null,这不对。所以在网上又是继续搜索,最后发现没有加getter方法,最后加了一个dataMap的get方法可以了。

struts的result方法,需要有getter/setter方法才能获取到值。

6.SSH网上商城项目实战

https://blog.csdn.net/eson_15/article/details/51332758

猜你喜欢

转载自blog.csdn.net/qq_42217201/article/details/83041726
今日推荐