`

struts2 亲密接触 json(json result type)

阅读更多

最近使用jquery,ajax调用后台服务非常需要一个json返回类型,网上只有一个可用的插件,叫jsonplugin 。但是测试了一下,两个版本居然都有错误,而且通过文档知道,它的使用还是相对复杂的,需要配置哪个对象需要转换,那些对象不需要。不难想象,通常我们只需要将一个对象转换成json格式,如果数据多,大不了都塞到一个对象里。
这样说起来,倒不如弃配置,转而采用规则,规定action中如果需要为ajax提供服务器端服务,必须定义一个名字叫json的成员类,类型当然是最通用的Object。然后实现一个Result,在value stack中,找到名字叫json的对象,把它序列化成json串写回客户端就ok了。

  注意:如果json的实际类型是String,这个String必须符合json语法规范。Map List之类的就无所谓,直接用就是了

  Result代码如下:

import  com.opensymphony.xwork2.ActionContext;
import  com.opensymphony.xwork2.ActionInvocation;
import  com.opensymphony.xwork2.Result;
import  com.opensymphony.xwork2.util.ValueStack;
import  net.sf.json.JSONObject;
import  org.apache.commons.logging.Log;
import  org.apache.commons.logging.LogFactory;
import  org.apache.struts2.StrutsStatics;
import  javax.servlet.http.HttpServletResponse;
import  java.io.IOException;

public   class  JSONResult  implements  Result {
   
    private   static   final  Log log  =  LogFactory.getLog(JSONResult. class );

    
public   void  execute(ActionInvocation invocation)  throws  Exception {
        ActionContext actionContext 
=  invocation.getInvocationContext();
       
        HttpServletResponse response 
=  (HttpServletResponse) actionContext
                .get(StrutsStatics.HTTP_RESPONSE);

        
try  {
            String json;
            Object jsonObject;

            
//  generate JSON
           
            ValueStack stack 
=  invocation.getStack();
            jsonObject 
=  stack.findValue( " json " );
            json 
=  JSONObject.fromObject(jsonObject).toString();
           
            log.debug(json);
           
            response.setContentType(
" text/xml;charset=utf-8 " );
            response.getWriter().write(json);

        } 
catch  (IOException exception) {
            log.error(exception.getMessage(), exception);
            
throw  exception;
        }
    }

}

struts配置如下:

   < result-types >
   
< result-type  name ="json"  class ="JSONResult" />
  
</ result-types >

< action   >
    
< result  name ="ajax"  type ="json"   />
</ action >


action部分代码:


    
private  Object json;
    
public  Object getJson() {
        
return  json;
    }

    
public   void  setJson(Object json) {
        
this .json  =  json;
    }
转载:http://www.blogjava.net/luedipiaofeng/archive/2009/05/14/270615.html
分享到:
评论

相关推荐

    struts2+json

    这个资源"struts2+json"显然涉及到在Struts2框架下实现JSON(JavaScript Object Notation)数据交换,这是一种轻量级的数据交换格式,广泛用于前后端交互,特别是AJAX(Asynchronous JavaScript and XML)请求。...

    struts2返回JSON数据的两种方式

    // 配置Struts2的action,添加&lt;result type="json"/&gt; class="com.yishi.action.JsonAction" method="selectPalbum"&gt; &lt;result type="json"/&gt; ``` 在第二种方式中,Struts2会自动处理返回的`jsonData`属性...

    struts2与json整合

    &lt;result-type name="json" class="org.apache.struts2.json.JSONResult"/&gt; &lt;/result-types&gt; &lt;interceptor name="json" class="org.apache.struts2.json.JSONInterceptor"/&gt; ``` 这样,Struts2就能够识别`...

    struts2返回json

    在Struts2中,返回JSON(JavaScript Object Notation)数据类型是一种常见的需求,尤其是在开发AJAX或者前后端分离的应用时。JSON是一种轻量级的数据交换格式,它允许服务器向客户端发送结构化的数据,而无需解析...

    struts2-json-plugin源码

    `struts2-json-plugin`是Struts2的一个插件,它使得Struts2能够处理JSON请求和响应,无需额外的配置或库。这个插件不仅包含了源码,还包含了必要的配置文件和类,使得开发者可以深入理解其工作原理并进行自定义扩展...

    struts2--json包

    5. **自定义JSON序列化和反序列化**:Struts2允许我们通过实现`org.apache.struts2.json.JSONWriter`接口来自定义JSON序列化过程,或者通过`org.apache.struts2.json.JSONProcessor`接口自定义反序列化过程。...

    AJAX和struts2传递JSON数组

    这告诉Struts2框架当收到名为`struts2Action`的请求时,使用`Struts2Action`类,并返回JSON格式的结果。如果需要在Action执行后返回一个页面,可以将`result`元素的类型改为`dispatcher`。 总结来说,通过这种方式...

    与struts2配套的JSON架包

    本知识点将详细介绍如何在Struts2项目中集成和使用JSON包。 1. **JSON简介**: JSON是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析和生成。它基于JavaScript语法,但不是JavaScript的一个子集...

    struts2-json-plugin-2.3.8.jar

    在Struts2中,你可以通过在Action类的方法上添加特定的注解,如`@Result(type = "json")`,来指示该方法应该返回JSON格式的数据。 Struts2 JSON Plugin 2.3.8版本包含了以下关键特性: 1. 自动处理Action结果:当...

    struts2要使用json必须的两个包

    在Struts2中使用JSON,有两个关键的JAR包是必不可少的,这些正是`struts2-json-plugin-2.2.1.jar`和`json-lib-2.3-jdk15.jar`。 首先,`struts2-json-plugin-2.2.1.jar`是Struts2 JSON插件的实现库。这个插件为...

    使用Struts2的JSON插件来实现JSON数据传递

    &lt;result type="json"&gt; &lt;param name="includeProperties"&gt;message &lt;/result&gt; ``` 在这个例子中,`includeProperties`参数指定了需要序列化到JSON的属性。当用户访问`/myAction.json`时,Struts2会将`message`...

    struts2 action 返回json方法(一)源码

    本篇将详细讲解如何在Struts2中配置Action来返回JSON响应。 首先,我们需要了解Struts2的Result类型。默认情况下,Action会返回一个JSP页面作为结果,但通过配置,我们可以让Action返回JSON数据。这需要使用到一个...

    Struts2中使用JSON数据格式所需全部jar包

    当Action执行完成后,返回"success",Struts2的JSON插件会根据配置自动将`result`和`list`属性转换为JSON并发送给客户端。 总的来说,Struts2通过整合JSON,提高了Web应用的响应速度和用户体验,使得服务器与客户端...

    Struts2与JSON

    &lt;result-type name="json" class="org.apache.struts2.json.JSONResult"/&gt; &lt;/result-types&gt; ``` 2. **创建Action类**: 创建一个Struts2 Action类,处理表单提交并返回结果。例如: ```java public class ...

    json2+jsonplugin struts2整合ajax时,使用json时需要的jar包

    在Struts2框架中整合Ajax以实现异步数据交互,JSON(JavaScript Object Notation)扮演了关键角色。JSON是一种轻量级的数据交换格式,它允许Web应用与服务器之间高效地传输数据,而无需进行繁琐的HTTP请求。在这个...

    struts2-json-plugin-2.2.1.jar

    struts2自带的json转换 倒入jar文件 struts.xml中 &lt;package ......extends="json-default" &lt;result type="json"/&gt;

    struts2所需的包和Struts2_json所需包

    导入这些包后,开发者可以按照Struts2的配置方式设置Action,通过`@ResultType("json")`注解或在配置文件中指定`result`类型为`json`,Struts2就会自动将Action的返回值转化为JSON格式并发送到客户端。 在实际开发...

    Struts2 ajax json使用介绍

    `@Action`注解定义了Action的URL,`@Result`注解设置了结果类型为`json`,这使得Struts2会自动将Action的属性转换为JSON格式并返回。 **四、Struts配置** 最后,我们需要在`struts.xml`配置文件中声明我们的Action...

    Struts2使用Annotation返回Json

    本篇文章将深入探讨如何在Struts2中通过注解实现返回JSON数据的功能。 首先,让我们理解JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析和生成。在Web应用中...

    struts2 json

    1. **配置Struts2**:在struts.xml配置文件中,为Action添加JSON结果类型,如`&lt;result type="json"&gt;`。 2. **创建Action**:Action类需要返回一个可以被转化为JSON的Java对象,例如一个Map或自定义的JavaBean。 3....

Global site tag (gtag.js) - Google Analytics