`
jayyanzhang2010
  • 浏览: 377882 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

Struts 2中启用json ajax支持

阅读更多
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路径下即可。

安装JSON插件按如下步骤进行:




(1)登陆http://code.google.com/p/jsonplugin/downloads/list站点,下载Struts2的JSON插件的最新版本,当前最新版本是0.7,我们可以下载该版本的JSON插件。

(2)将下载到的jsonplugin-0.7.jar文件复制到Web应用的WEB-INF路径下,即可完成JSON插件的安装。

实现Actio逻辑
    假设输入页面中包含了三个表单域,这三个表单域对于三个请求参数,因此应该使用Action来封装这三个请求参数。三个表单域的name分别为field1、field2和field3。

处理该请求的Action类代码如下:
public class JSONExample
{
//封装请求参数的三个属性
     private String field1;
     private transient String field2;
     private String field3;
//封装处理结果的属性
     private int[] ints = {10, 20};
     private Map map = new HashMap();
     private String customName = "custom";

//三个请求参数对应的setter和getter方法
public String getField1() {
         return field1;
     }
     public void setField1(String field1) {
         this.field1 = field1;
     }

//此处省略了field1和field2两个字段的setter和getter方法
...
//封装处理结果的属性的setter和getter方法
     public int[] getInts() {
         return ints;
     }

     public void setInts(int[] ints) {
         this.ints = ints;
     }

     public Map getMap() {
         return map;
     }

   public void setMap(Map map) {
         this.map = map;
     }

//使用注释语法来改变该属性序列化后的属性名
     @JSON(name="newName")
     public String getCustomName()  {
         return this.customName;
    }

     public String execute()  {
         map.put("name", "yeeku");
         return Action.SUCCESS;
     }
}

在上面代码中,使用了JSON注释,注释时指定了name域,name域指定Action属性被序列化成JSON对象的属性名。除此之外,JSON注释还支持如下几个域:

serialize:设置是否序列化该属性
deserialize:设置是否反序列化该属性。
format:设置用于格式化输出、解析日期表单域的格式。例如"yyyy-MM-dd'T'HH:mm:ss"。

    配置该Action与配置普通Action存在小小的区别,应该为该Action配置类型为json的Result。而这个Result无需配置任何视图资源。

配置该Action的struts.xml文件代码如下:
<?xml version="1.0" encoding="GBK"?>
<!DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
    "http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
<constant name="struts.i18n.encoding" value="UTF-8"/>
<package name="example"  extends="json-default">
  <action name="JSONExample" class="lee.JSONExample">
   <result type="json"/>
  </action>
</package>
</struts>

在上面配置文件中有两个值得注意的地方:
第一个地方是配置struts.i18n.encoding常量时,不再是使用GBK编码,而是UTF-8编码,这是因为Ajax的POST请求都是以UTF-8的方式进行编码的。
第二个地方是配置包时,自己的包继承了json-default包,而不再继承默认的default包,这是因为只有在该包下才有json类型的Result。

实现JSP页面first.jsp:

为了简单地访问DOM节点,这里用了JavaScript框架Prototype.js.
<%@ page language="java" contentType="text/html; charset=GBK"%>
<script src="prototype-1.4.0.js" type="text/javascript">
</script>
<script language="JavaScript">

function gotClick()
{
//请求的地址
var url = 'JSONExample.action';

var params = Form.serialize('form1');
//创建Ajax.Request对象,对应于发送请求
var myAjax = new Ajax.Request(
url,
{
//请求方式:POST
method:'post',
//请求参数
parameters:params,
//指定回调函数
onComplete: processResponse,
//是否异步发送请求
asynchronous:true
});
}
    function processResponse(request)
{
$("show").innerHTML = request.responseText;
}
</script>
<html>
<head>
<title>使用JSON插件</title>
</head>
<body>
<form id="form1" name="form1" method="post">
  <INPUT TYPE="text" name="field1" id="field1"/><br>
  <INPUT TYPE="text" name="field2" id="field2"/><br>
  <INPUT TYPE="text" name="field3" id="field3"/><br>
  <INPUT TYPE="button" value="提交" onClick="gotClick();"/>
</form>
<div id="show">
</div>
</body>
</html>
可以看出:服务器响应是整个Action实例的状态值,包括Action实例里的每个属性名以及对应的属性值。
分享到:
评论

相关推荐

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

    1. **struts-plugin.xml配置**:在`struts-plugin.xml`文件中,你需要启用JSON插件,如下: ```xml &lt;constant name="struts.enable.JSON" value="true"/&gt; ``` 2. **Action类的配置**:为了返回JSON响应,你的...

    struts2+json/ajax

    在Struts2中,实现JSON支持需要配置Struts2的JSON插件。首先,需要在项目的`struts.xml`配置文件中添加相应的配置,启用JSON结果类型。例如: ```xml &lt;constant name="struts.enable.SlashesInActionNames" value=...

    struts2结合JSON的Ajax支持

    首先,要在Struts2中启用JSON支持,我们需要在`struts.xml`配置文件中添加相关的拦截器栈。这通常可以通过引入`struts2-json-plugin`插件来完成。在`struts-plugin.xml`中添加如下配置: ```xml &lt;constant name="...

    Struts2 与Jquery Ajax的json数据交换的典型范例

    首先,需要在项目中添加该插件的依赖,并在struts.xml配置文件中启用JSON结果类型: ```xml &lt;constant name="struts.enable.JSON" value="true"/&gt; &lt;package name="default" extends="struts-default"&gt; ...

    struts2 ajax json

    在Struts2中,Ajax和JSON技术的结合使得前后端交互变得更加高效和实时,为用户提供了更好的体验。现在我们来深入探讨这些知识点。 首先,`Ajax`(Asynchronous JavaScript and XML)是一种在无需刷新整个网页的情况...

    struts-ajax-json-struts包

    它提供了多种AJAX动作和结果类型,使得在Struts2配置中轻松启用AJAX功能。 JSON作为一种轻量级的数据交换格式,由于其简洁性和易读性,被广泛用于Web服务和客户端之间的数据传输。在Struts中,可以使用Struts2的...

    使用struts2 和ajax进行传递json数据

    1. 在Struts2中,确保已经添加了JSON插件,如struts2-json-plugin,以便支持JSON结果类型。 2. 配置Struts2的struts-default.xml,启用JSON结果类型。 3. 前端需要设置Content-Type为"application/json",以表明发送...

    struts2-json

    安装插件后,只需在Action配置中启用JSON支持,就能自动处理JSON输出。 2. **Action配置**: 在Struts2的配置文件(struts.xml或struts.properties)中,需要为Action添加一个`@ResultType`注解或结果类型配置,指定...

    AjaxStruts2Json实例

    首先,我们需要了解Struts2中Ajax的支持。Struts2提供了`struts2-jquery-plugin`和`struts2-json-plugin`两个插件来实现Ajax功能。在这个实例中,我们将主要使用`struts2-json-plugin`,它能够方便地将Action的结果...

    struts2中的json

    在Struts2中,JSON(JavaScript Object Notation)支持是它的一个强大特性,使得应用程序能够与客户端进行高效的数据交换。JSON是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析和生成。它被广泛...

    struts2-json-plugin-2.3.8.jar

    在实际开发中,为了使用这个插件,你需要将`struts2-json-plugin-2.3.8.jar`文件放入项目的类路径(classpath)下,然后在Struts2的配置文件(通常为struts.xml)中启用JSON插件。在Action类中,定义返回JSON数据的...

    struts2要使用json必须的两个包

    在Struts2中集成JSON(JavaScript Object Notation)支持,可以使得前后端交互更加高效,通常用于AJAX请求或者API接口的响应。在Struts2中使用JSON,有两个关键的JAR包是必不可少的,这些正是`struts2-json-plugin-...

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

    然后,在Struts2的配置文件struts.xml中启用JSON插件,通常通过以下配置实现: ```xml &lt;constant name="struts.enable.SlashesInActionNames" value="true"/&gt; &lt;constant name="struts.action.extension" value=...

    struts2 json传输对象文档+jar包

    在Struts2中使用JSON,首先需要在配置文件(struts.xml)中启用JSON插件,并指定哪些Action支持JSON输出。然后,在Action类中,你可以创建一个返回类型为`Map, Object&gt;`或自定义对象的方法,这个方法将被转换成JSON...

    struts2乱码与json插件(1)

    在`struts.xml`配置文件中,可能包含了启用JSON插件的配置,如下所示: ```xml &lt;constant name="struts.enable.SMD" value="true"/&gt; &lt;package name="default" namespace="/" extends="struts-default,json-default...

    Struts2使用Annotation返回Json

    2. **启用JSON支持**: 在struts.xml配置文件中,添加以下配置来启用JSON插件: ```xml &lt;constant name="struts.enable.SlashesInActionNames" value="true"/&gt; &lt;constant name="struts.action.extension" value=...

    json_struts2.rar_JSON java_SSH json Struts2_java json_json_strut

    2. **Struts2的JSON插件**:Struts2有专门的JSON插件,可以轻松地启用JSON支持。通过配置struts.xml,我们可以指定哪些Action应返回JSON响应,并定义要包含在JSON响应中的字段。 3. **jQuery的Ajax方法**:如`$....

    Struts2Json+ajax的实现 精简源码

    首先,我们需要在`struts.xml`配置文件中启用JSON支持。通过添加`&lt;constant&gt;`标签设置`struts.json.enable=true`,开启Struts2的JSON插件。然后,定义一个或者多个Action,将它们配置为返回JSON类型的结果。例如: ...

Global site tag (gtag.js) - Google Analytics