最近使用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(JavaScript Object Notation)数据交换,这是一种轻量级的数据交换格式,广泛用于前后端交互,特别是AJAX(Asynchronous JavaScript and XML)请求。...
// 配置Struts2的action,添加<result type="json"/> class="com.yishi.action.JsonAction" method="selectPalbum"> <result type="json"/> ``` 在第二种方式中,Struts2会自动处理返回的`jsonData`属性...
<result-type name="json" class="org.apache.struts2.json.JSONResult"/> </result-types> <interceptor name="json" class="org.apache.struts2.json.JSONInterceptor"/> ``` 这样,Struts2就能够识别`...
在Struts2中,返回JSON(JavaScript Object Notation)数据类型是一种常见的需求,尤其是在开发AJAX或者前后端分离的应用时。JSON是一种轻量级的数据交换格式,它允许服务器向客户端发送结构化的数据,而无需解析...
`struts2-json-plugin`是Struts2的一个插件,它使得Struts2能够处理JSON请求和响应,无需额外的配置或库。这个插件不仅包含了源码,还包含了必要的配置文件和类,使得开发者可以深入理解其工作原理并进行自定义扩展...
5. **自定义JSON序列化和反序列化**:Struts2允许我们通过实现`org.apache.struts2.json.JSONWriter`接口来自定义JSON序列化过程,或者通过`org.apache.struts2.json.JSONProcessor`接口自定义反序列化过程。...
这告诉Struts2框架当收到名为`struts2Action`的请求时,使用`Struts2Action`类,并返回JSON格式的结果。如果需要在Action执行后返回一个页面,可以将`result`元素的类型改为`dispatcher`。 总结来说,通过这种方式...
本知识点将详细介绍如何在Struts2项目中集成和使用JSON包。 1. **JSON简介**: JSON是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析和生成。它基于JavaScript语法,但不是JavaScript的一个子集...
在Struts2中,你可以通过在Action类的方法上添加特定的注解,如`@Result(type = "json")`,来指示该方法应该返回JSON格式的数据。 Struts2 JSON Plugin 2.3.8版本包含了以下关键特性: 1. 自动处理Action结果:当...
在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插件的实现库。这个插件为...
<result type="json"> <param name="includeProperties">message </result> ``` 在这个例子中,`includeProperties`参数指定了需要序列化到JSON的属性。当用户访问`/myAction.json`时,Struts2会将`message`...
本篇将详细讲解如何在Struts2中配置Action来返回JSON响应。 首先,我们需要了解Struts2的Result类型。默认情况下,Action会返回一个JSP页面作为结果,但通过配置,我们可以让Action返回JSON数据。这需要使用到一个...
当Action执行完成后,返回"success",Struts2的JSON插件会根据配置自动将`result`和`list`属性转换为JSON并发送给客户端。 总的来说,Struts2通过整合JSON,提高了Web应用的响应速度和用户体验,使得服务器与客户端...
<result-type name="json" class="org.apache.struts2.json.JSONResult"/> </result-types> ``` 2. **创建Action类**: 创建一个Struts2 Action类,处理表单提交并返回结果。例如: ```java public class ...
在Struts2框架中整合Ajax以实现异步数据交互,JSON(JavaScript Object Notation)扮演了关键角色。JSON是一种轻量级的数据交换格式,它允许Web应用与服务器之间高效地传输数据,而无需进行繁琐的HTTP请求。在这个...
struts2自带的json转换 倒入jar文件 struts.xml中 <package ......extends="json-default" <result type="json"/>
导入这些包后,开发者可以按照Struts2的配置方式设置Action,通过`@ResultType("json")`注解或在配置文件中指定`result`类型为`json`,Struts2就会自动将Action的返回值转化为JSON格式并发送到客户端。 在实际开发...
`@Action`注解定义了Action的URL,`@Result`注解设置了结果类型为`json`,这使得Struts2会自动将Action的属性转换为JSON格式并返回。 **四、Struts配置** 最后,我们需要在`struts.xml`配置文件中声明我们的Action...
本篇文章将深入探讨如何在Struts2中通过注解实现返回JSON数据的功能。 首先,让我们理解JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析和生成。在Web应用中...
1. **配置Struts2**:在struts.xml配置文件中,为Action添加JSON结果类型,如`<result type="json">`。 2. **创建Action**:Action类需要返回一个可以被转化为JSON的Java对象,例如一个Map或自定义的JavaBean。 3....