J2EE下使用AJAX(五) jsonplugin -- struts2下的AJAX插件
来源:互联网 发布:淘宝哪家珠子是真货 编辑:程序博客网 时间:2024/04/30 01:03
对于前面的例子,如果使用XmlHttpRequest实现AJAX,依赖于在服务器端使用Response对象生成返回结果。在struts 1.x版本中,这一点不成问题,但对于struts2中,其MVC框架中隐藏了Request、Response这些对象。不过这一点问题不大,我们仍然可以使用某些手段取得这些对象。但这不是本节讲述的内容,本节主要讲述struts2下的AJAX工具jsonplugin,它是由Google发布的,也算是身出名门,其官方首页为http://cwiki.apache.org/S2PLUGINS/json-plugin.html
该插件可以将Action类中的属性(带getter和setter的成员变量)以JSON格式返回,与struts2集成的相当完美,只需在映射配置文件中做很少的改动即可。
本节只讲述如何使用jsonplugin,有关struts2的使用及JSON格式说明,请参考本人相关的文章。
JSON入门
与jsonplugin相关的内容体现在如下几个文件中:
- index.jsp:发送请求并获取JSON格式结果
- struts-test.xml:struts2的action映射配置
- JsonTestAction.java:请求处理Action类
5.1 index.jsp
为了避免麻烦,我仍然使用最原始的XmlHttpRequest请求方式,相关JS代码如下所示:
function GetXMLHttpRequest()
{
var oRequest;
if(window.ActiveXObject)
{
var arrSignatures = ["MSXML2.XMLHTTP.6.0", "MSXML2.XMLHTTP.5.0", "MSXML2.XMLHTTP.4.0",
"MSXML2.XMLHTTP.3.0", "MSXML2.XMLHTTP",
"Microsoft.XMLHTTP"];
for (var i=0; i < arrSignatures.length; i++) {
try {
oRequest = new ActiveXObject(arrSignatures[i]);
return oRequest;
} catch (oError) { /*ignore*/ }
}
}
else if(window.XMLHttpRequest)
{
oRequest = new XMLHttpRequest();
//oRequest.overrideMimeType('text/html');
return oRequest;
}
throw new Error("MSXML is not installed on your system.");
}
function json_ajax()
{
if(bXmlHttpSupport)
{
var frm = document.form1;
var sUrl = "test/Hello.action?helloStr=London";
var oRequest = GetXMLHttpRequest();
oRequest.onreadystatechange = function()
{
if(oRequest.readyState == 4)
{
if(oRequest.status == 200)
{
var o = eval("(" + oRequest.responseText + ")");
alert(o.helloStr);
}
else
alert("Unknown resource: " + oRequest.statusText);
}
};
oRequest.open('POST', sUrl);
oRequest.send(null);
}
}
与例1最大的改变在于使用如下代码
var o = eval("(" + oRequest.responseText + ")");
获取返回的JSON对象。
5.2 struts-test.xml
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
<package name="test" namespace="/test" extends="json-default">
<action name="Hello" class="lld.test.ajax.struts2json.JsonTestAction">
<result type="json" />
</action>
</package>
</struts>
这个与标准的struts2映射配置的区别为,在package标签中,extends的属性为“json-default”,而不是“struts-default”,同里,对每个action标签中的result,添加属性
type="json"
5.3 JsonTestAction.java
import com.opensymphony.xwork2.ActionSupport;
public class JsonTestAction extends ActionSupport
{
private static final long serialVersionUID = 2949104549856769172L;
private String helloStr;
public String getHelloStr()
{
return helloStr;
}
public void setHelloStr(String helloStr)
{
this.helloStr = helloStr;
}
public String execute() throws Exception
{
this.setHelloStr("Hello, " + this.helloStr);
return SUCCESS;
}
}
这个类与标准的struts2 Action类没有任何区别。
注:如需本例的源代码可email至lldwolf@163.com索引,因集成struts2的jar包,所以大小约为3M
- J2EE AJAX(五) jsonplugin struts2下的AJAX插件
- J2EE下使用AJAX:jsonplugin -- struts2下的AJAX插件
- J2EE下使用AJAX(五) jsonplugin -- struts2下的AJAX插件
- J2EE下使用AJAX(五) jsonplugin -- struts2下的AJAX插件
- Struts2下使用jsonplugin及jquery完成ajax功能
- Struts2下使用jsonplugin及jquery完成ajax功能
- Struts2下使用jsonplugin及jquery完成ajax功能 (简单应用)
- J2EE下使用AJAX(一) 最原始的AJAX
- J2EE下使用AJAX(一) 最原始的AJAX
- J2EE下使用AJAX(一) 最原始的AJAX .
- Ajax在struts2环境下的使用
- J2EE下使用AJAX(二) Prototype封装
- J2EE下使用AJAX(三) DWR
- J2EE下使用AJAX(二) Prototype封装
- J2EE下使用AJAX(二) Prototype封装
- J2EE下Ajax框架dwr的使用感觉
- struts2下的ajax注意事项
- J2EE下使用AJAX(四) 隐藏帧 -- 史前的AJAX实现
- myeclipse安装
- 女人最喜欢问题的标准答案【已婚未婚喜爱泡妞打算结婚暂不离婚的都进来培训!】
- 2005MobileEdition3.0中的复制和远程数据访问功能的技术对比
- Grails vs Rails—我的想法
- 日志传送学习笔记
- J2EE下使用AJAX(五) jsonplugin -- struts2下的AJAX插件
- 存储过程的学习
- SQLServer和、数据传输简单总结
- linux shell教程(简单)
- java比较排序的方法
- SQLServer连接VFP的实现
- 如何在客户端调用SQLSERVER的DTS包?
- 大师兄Smarty教程修正版
- Linux标准课程