`

struts json ajax action 结合

 
阅读更多

首先,我的例子是从这里改的:

http://www.blogjava.net/max/archive/2007/06/12/123682.html

他用的json的jar包是别人写的,我用的Jar包是struts提供的struts2-json-plugin-2.1.8.1.jar

用到的jar包在附件中。


 

public class AjaxAction extends ActionSupport
{
	private static final long serialVersionUID = -5009042081262340542L;
	private int bookId;
	private String title;
	private double price;
	private List<String> comments;
	private transient String secret1;
	private String secret2;

	@JSON(name = "ISBN")
	public int getBookId()
	{
		return bookId;
	}

	public void setBookId(int bookId)
	{
		this.bookId = bookId;
	}

	public List<String> getComments()
	{
		return comments;
	}

	public void setComments(List<String> comments)
	{
		this.comments = comments;
	}

	public double getPrice()
	{
		return price;
	}

	public void setPrice(double price)
	{
		this.price = price;
	}

	public String getTitle()
	{
		return title;
	}

	public void setTitle(String title)
	{
		this.title = title;
	}

	@Override
	public String execute() throws Exception
	{

		bookId = 15645912;
		title = "Max On Java";
		price = 0.9999d;
		comments = new ArrayList<String>(3);
		comments.add("It's no bad!");
		comments.add("WOW!");
		comments.add("No comment!");
		secret1 = "You can't see me!";
		secret2 = "I am invisible!";
		return SUCCESS;
	}

}

 

 以上代码值得注意的是,通过@JSON的JAVA注释(Annotation),我们可以改变JSON结果的属性名称,另外带有transient修饰符与没有Getter方法的字段(field)都不会被串行化为JSON。

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="Struts2_AJAX_DEMO" extends="json-default">
		<action name="ajaxAction" class="AjaxAction">
			<result type="json" />
		</action>
	</package>
</struts>    

 上面配置文件的“package”元素和以往不同的是,它扩展了“json-default”而不是“struts-default”。“json-default”是在struts-json-plugin.xxx.jar包里的struts-plugin.xml中定义的。

 

 

发布运行应用程序,在浏览器中键入:http://found.mshome.net:8888/StrutsAjax/ajaxAction,出现下载文件对话框,原因是JSON插件将HTTP响应(Response)的MIME类型设为“application/json”。把文件ajaxAction下载下来,用记事本打开,内容如下:

{"ISBN":15645912,"comments":["It's no bad!","WOW!","No comment!"],"price":0.9999,"title":"Max On Java"}

 

对了,我的web.xml中是这样配置的:

 

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
	http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
	<welcome-file-list>
		<welcome-file>index.jsp</welcome-file>
	</welcome-file-list>
	<filter>
		<filter-name>struts2</filter-name>
		<filter-class>
			org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
	</filter>
	<filter-mapping>
		<filter-name>struts2</filter-name>
		<url-pattern>/*</url-pattern>
	</filter-mapping>
</web-app>

 

 所以访问链接和上面那个人的例子不太一样。

html页面中这样的:大部分内容都和上面那个人的例子一样,只有url不同。

 

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
	<head>
		<title>Json.html</title>

		<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
		<meta http-equiv="description" content="this is my page">
		<meta http-equiv="content-type" content="text/html; charset=UTF-8">
		<script type="text/javascript">
var bXmlHttpSupport = (typeof XMLHttpRequest != "undefined" || window.ActiveXObject);

if (typeof XMLHttpRequest == "undefined" && window.ActiveXObject) {
	function XMLHttpRequest() {
		var arrSignatures = [ "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 {
				var oRequest = new ActiveXObject(arrSignatures[i]);
				return oRequest;
			} catch (oError) { /*ignore*/
			}
		}

		throw new Error("MSXML is not installed on your system.");
	}
}

function retrieveBook() {
	if (bXmlHttpSupport) {
		var sUrl = 'ajaxAction';
		var oRequest = new XMLHttpRequest();
		oRequest.onreadystatechange = function() {
			if (oRequest.readyState == 4) {
				var oBook = eval('(' + oRequest.responseText + ')');
				var bookHolder = document.getElementById('bookHolder');
				var sBook = '<p><b>ISBN: </b>' + oBook.ISBN + '</p>';
				sBook += ('<p><b>Title: </b>' + oBook.title + '</p>');
				sBook += ('<p><b>Price: </b>$' + oBook.price + '</p>');
				sBook += ('<b><i>Comments: </i></b><hr/>');
				for (i = 0; i < oBook.comments.length; i++) {
					sBook += ('<p><b>#' + (i + 1) + ' </b>' + oBook.comments[i] + '</p>');
				}
				bookHolder.innerHTML = sBook;
			}
		};
		oRequest.open('POST', sUrl);
		oRequest.send(null);
	}
}
</script>
	</head>

	<body>
		<input type="button" value="Retrieve Book" onclick="retrieveBook()" />
		<div id="bookHolder"></div>
	</body>
</html>
 

 

http://found.mshome.net:8888/StrutsAjax/Json.html

自己访问一下你自己的网页试试。

 

 

  • 描述: 用到的jar包,有的是多余的
  • 大小: 54.4 KB
分享到:
评论

相关推荐

    Struts2 ajax json使用介绍

    在这里,我们定义了一个名为`ajaxAction`的Action,指向`AjaxAction`类,并设置其结果类型为`json`。 综上所述,通过以上步骤,我们已经在Struts2中实现了使用Ajax获取并展示JSON数据的功能。这个过程包括了引入...

    struts2jsonajax

    Struts2、JSON和AJAX是Web开发中的关键技术,它们在构建动态、交互式的Web应用程序中发挥着重要作用。...在"struts2jsonajax"项目中,开发者将学习到如何将这三个强大的工具结合在一起,构建出强大的Web应用程序。

    AJAX和struts2传递JSON数组

    在本场景中,我们将探讨如何使用AJAX来传递JSON数组,并在Struts2的Action中接收和处理这些数据。 首先,JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,它易于人阅读和编写,同时也易于机器解析...

    struts2ajax项目

    总的来说,"struts2ajax"项目展示了如何在Struts2框架下,结合jQuery的Ajax功能,实现页面的异步数据交互。通过这个项目,你可以学习到Struts2的Action配置、Ajax请求的发送与接收、以及前端和后端的数据处理。这将...

    struts2 json Ajax 整合所需全部jar包.zip

    为了正确整合这些技术,开发者需要了解如何配置Struts2的Action和结果类型,熟悉JSON对象的构造和解析,以及掌握基本的Ajax编程技巧。此外,良好的错误处理和调试能力也是必不可少的。当所有这些元素都正确配置和...

    struts2+json

    在这个例子中,所有AjaxAction的属性都会被包含在返回的JSON中。 在Action类中,可能有一个方法处理AJAX请求,如下: ```java public class AjaxAction { private String message; public String execute() { /...

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

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

    struts2 ajax json

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

    struts-ajax-json-struts包

    Struts-AJAX-JSON-Struts 包是基于经典的Struts框架,为了实现AJAX(异步JavaScript和XML)和JSON(JavaScript Object Notation)交互功能而设计的一组库和资源集合。这个包通常包含了Struts框架的核心组件,以及...

    Jquery struts2 json 实现ajax

    标题 "Jquery struts2 json 实现ajax" 涉及到的是在Web开发中使用jQuery库与Struts2框架结合处理JSON数据的Ajax技术。这个主题主要关注如何通过前端的jQuery实现异步请求,与后端的Struts2框架进行交互,从而更新...

    struts2 json ajax示例 google提示

    在这个"struts2 json ajax示例 google提示"中,我们将探讨如何在Struts2框架中利用JSON和AJAX技术实现Google搜索建议那样的动态数据加载功能。 首先,我们需要在Struts2项目中集成JSON插件。Struts2 JSON插件提供了...

    Struts+Jquery+Ajax+Json应用实例

    public class AjaxAction extends ActionSupport { public String execute() { Map, Object&gt; result = new HashMap(); // 执行业务逻辑... result.put("status", "success"); result.put("message", "数据获取...

    Struts+ajax

    Struts和Ajax是两种在Web开发中常用的框架和技术,它们结合使用可以构建出高效、动态且用户友好的应用程序。在本篇文章中,我们将深入探讨Struts与Ajax的整合及其在增删查改(CRUD)操作中的应用。 首先,让我们...

    struts2+json+ajax整合例子(导入即可运行,附带详细教程)

    2. **创建AjaxAction**:在Java后端,`AjaxAction`需要实现业务逻辑并返回JSON数据。例如,它可能从数据库获取数据,然后将数据转化为JSON对象。 ```java public class AjaxAction extends ActionSupport { ...

    jquery的ajax传json对象数组到struts2的action

    总结起来,将jQuery的AJAX与Struts2结合,可以通过JSON对象数组进行前后端的数据交互。在前端,利用`$.ajax()`发送JSON数据;在后端,Struts2 Action接收并处理这些数据。这种通信方式在现代Web应用中非常常见,因为...

    struts2 Ajax json Jquery demo

    2. `AjaxAction.java`: 实现了处理Ajax请求的Struts2 Action类。 3. `index.jsp`: 主页面,包含了发送Ajax请求的jQuery代码。 4. `script.js`: 包含处理Ajax响应的jQuery脚本。 5. 可能还有其他资源文件如CSS样式表...

    AjaxStruts2Json实例

    **AjaxStruts2Json实例详解** 在Web开发中,用户界面的实时性和互动性变得越来越重要,这使得异步更新技术如Ajax(Asynchronous JavaScript and XML)被广泛应用。Ajax允许网页在不重新加载整个页面的情况下与...

    struts2+json+ajax+jquery

    Struts2、JSON、Ajax 和 jQuery 是Web开发中的四个关键技术,它们共同构建了现代Web应用程序的数据交互和用户界面交互的核心部分。 Struts2 是一个基于MVC(Model-View-Controller)架构的Java Web框架,它使得...

    struts2与json整合

    通过将Struts2与JSON整合,可以轻松地与AJAX技术结合,实现前后端数据的实时交互。例如,在前端使用jQuery等库发起AJAX请求,获取或发送JSON格式的数据,而在后端,Struts2框架则能够无缝处理这些JSON数据,从而构建...

Global site tag (gtag.js) - Google Analytics