struts2对json的支持

方式一:自行构造json

1)导入jar包:

  xstream 或者 Jackson,推荐使用Jackson,效率高

2)引入struts2,书写配置文件

3)修改action配置,修改result返回的jsp页面,页面只留下${requestScope.json}

下面是我之前做的安卓服务器例子:

action配置

<!-- 设置全局转发地址,专门发送JSON对象 --> 因为我做后台所有信息都是json格式,所以就用了全局设置
        <global-results>
            <result name="success">/WEB-INF/return.jsp</result>
            <result name="input">/err.jsp</result>
        </global-results>

action类

/**
     * 登陆
     * session中添加数据
     */
    public String login() {

        User login = userService.login(user);

        ActionContext ac = ActionContext.getContext();

        Map<String, Object> application = ac.getApplication();
        if (application.get("user:" + user.getId()) == null)
            application.put("user:" + user.getId(), user);

        ActionUtil.putRequestParam(JsonUtil.toJson(login)); //该句是重点,把对象转换成json,然后保存到域对象中

        return "success";
    }

public class ActionUtil {

  public static void putRequestParam(String res) {
    ActionContext context = ActionContext.getContext(); //因为Action是多例的所以直接在外部可以获取ActionContext对象
    Map<String, Object> requestMap = context.getContextMap();
    requestMap.put("result", res);
  }

}

return.jsp

1 <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
2 ${result}

浏览器获取到数据再调用trim()方法除去空行即可

方式二:使用Struts2的struts2-json-plugin.jar插件返回JSON数据。

该部分转载:转自:http://www.cnblogs.com/liubaozhe/p/4418741.html

一、其中主要步骤有:

1.将struts2-json-plugin.jar插件拷贝到项目的"/WEB-INF/lib"文件夹下;

2.编写Action类文件;

3.在struts.xml文件中配置这个Action,这个Action所在的"<package.../>"必须继承”json-default“, Action 的 Result  类型为  json ,即 type="json" ,而且不对应任何视图资源。

二、示例代码:

Action类文件:

package com.example.action;

import java.util.ArrayList;

import com.opensymphony.xwork2.ActionSupport;

public class StrutsJsonAction extends ActionSupport {
    private int i=123;
    private String str="str";
    private int[] array={1,2,3};
    private ArrayList<String> list;

    public int getI() {
        return i;
    }
    public void setI(int i) {
        this.i = i;
    }
    public String getStr() {
        return str;
    }
    public void setStr(String str) {
        this.str = str;
    }
    public int[] getArray() {
        return array;
    }
    public void setArray(int[] array) {
        this.array = array;
    }
    public ArrayList<String> getList() {
        return list;
    }
    public void setList(ArrayList<String> list) {
        this.list = list;
    }
    public String execute(){
        list = new ArrayList<String>();
        list.add("red");
        list.add("green");
        list.add("yellow");
        return SUCCESS;
    }
}

struts.xml文件:

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

然后在浏览器中访问"   http://localhost:8080/Struts2_JSON/JSONExample  ",显示结果如图:

JSON 插件会将所有可序列化  Action  属性序列化为 JSON  数据。

三、配置常用JSON类型的Result

浏览器是否缓存JSON

<result type="json">
  <!-- 取消浏览器缓存-->
  <param name="noCache">true</param>
</result>

设置浏览器响应类型,默认为text/html

<result type="json">
  <!-- 设置服务器响应类型-->
  <param name="contentType">application/json</param>
</result>

排除值为 null 的属性

<result type="json">
  <!--排除值为null的属性-->
  <param name="excludeNullProperties">true</param>
</result>

只序列化指定的Action属性

<result type="json">
    <!--只序列化Action内的list属性-->
    <param name="root">list</param>
</result>
序列化包含的属性(逗号分隔的正则表达式列表)
<result type="json">
    <!--序列化list属性-->
    <param name="includeProperties">list.*</param>
</result>
<result type="json">
    <!--序列化array属性,\[和\]匹配数组的[]括号,\d匹配数字,+表示一次或多次-->
    <param name="includeProperties">array\[\d+\]</param></result>
排除不需要被序列化的属性(逗号分隔的正则表达式列表)
<result type="json">
     <!--排除list属性-->
  <param name="excludeProperties"> list.* </param>
</result>
时间: 2024-11-05 13:28:42

struts2对json的支持的相关文章

json与java对象的转换,以及struts2对json的支持,实现ajax技术

这两天学的东西有点多,今天抽个时间写下来,以此作为激励,这两天学了json,ajax,jQuery 一.使用第三方的工具java转换为json类型 首先就是java类型转换为json对象,首先要导入第三方工具包: 准备导入第三方jar包: >commons-beanutils-1.7.0.jar >commons-collections-3.1.jar >commons-lang-2.5.jar >commons-logging-1.1.1.jar >ezmorph-1.0.

[转] 关于Struts-JSON配置(详解带实例struts2的json数据支持)

关于Struts-JSON的提高开发效率 一.JSON是什么? :JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式.易于人阅读和编写,同时也易于机器解 析和生成.它基于JavaScript(Standard ECMA-262 3rd Edition - December 1999)的一个子集. JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯(包括C, C , C#, Java, JavaScript, Perl, Python

Struts2返回JSON对象的方法总结

一.为什么struts2要返回json       如果是作为客户端的HTTP+JSON接口工程,没有JSP等view视图的情况下,使用Jersery框架开发绝对是第一选择.而在基于Spring3 MVC的架构下,对HTTP+JSON的返回类型也有很好的支持.但是,在开发工作中,对功能的升级是基于既定架构是很常见的情况.本人碰到需要用开发基于Struts2的HTTP+JSON返回类型接口就是基于既定框架结构下进行的. struts2和json的集成,是为了适应在action 处理完后需要向对端输

(转)Struts2返回JSON对象的方法总结

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

【SSH网上商城项目实战07】Struts2和Json的整合

上一节我们完成了DataGrid显示jason数据,但是没有和后台联系在一起,只是单纯地显示了我们自己弄的json数据,这一节我们将json和Struts2整合,打通EasyUI和Struts2之间的交互. 1. json环境的搭建 json环境搭建很简单,导入json的jar包即可,如下: 2. 完善Action 在DataGrid控件中有个属性是url,可以指定请求数据的url地址,在上一节我们将这个地址直接设置成了一个具体的json文件,这里我们将这个url设置成一个action,如url

SpringMVC 控制器之对ServletAPI的支持与对JSON的支持

本篇两个知识点 1.SpringMVC对ServletAPI的支持 2.SpingMVC对JSON的支持 示例(用户登录,存放cookie与session) <body> <a href="${pageContext.request.contextPath }/user/ajax.do">测试ajax</a> <form action="${pageContext.request.contextPath }/user/login.do

Struts2对AJAX的支持

一.简介        struts2确实一个非常棒的MVC框架.这里部分记述一下struts2对AJAX的支持.实现AJAX有两种方式,一种是使用原生的javascript代码实现,一种是使用第三方的ajax框架(jquery,dwr,dojo等),jquery和dwr比较简单,做项目时也会经常用到.Struts2并没有发明新的AJAX框架,而是使用两个较为流行的框架,即Dojo框架和DWR框架. Dojo是一个用javascript语言实现的开源DHTML工具包,是一个客户端的AJaX框架,

Struts2对于i18n的支持

1 2 struts.xml中可以配置 3 <constant name="struts.custom.i18n.resources" value="itcast"> 指定全局资源文件 4 全局资源文件/包范围资源文件/动作类的资源文件 5 全局资源文件:src下放到WEB-INF/classes目录下 6 包范围资源文件:服务于Java类中的包下的动作类的. java类访问资源文件 7 取名:package_语言_国家.properties 8 9 动

Struts2 ajax json小例子

1:首先要解决jar包的问题,我最近一直用maven搭建项目,所以把pom.xml复制到这. 要有struts2的核心包,struts2和Json整合的包,以及json lib.刚才转载了一篇解决json lib老是报错的博客,问题完美解决. <dependencies> <dependency> <groupId>org.apache.struts</groupId> <artifactId>struts2-json-plugin</ar