`
lsw289998792
  • 浏览: 1033 次
  • 性别: Icon_minigender_1
社区版块
存档分类
最新评论

strurs2和ajax的简单整合

阅读更多
相信大家对ajax都有所了解吧,废话不多说,直接说功能,上传代码
网页上有个button,浏览者点击button,ajax请求struts2的action,从数据库中取得相应数据,然后将数据封装成一个xml文件的数据流,返回给前台,最后前台创建表格,解析xml文件类型的数据,将数据填充到表格中

html代码
<%@ page language="java" contentType="text/html; charset=gbk"%>
<%@taglib prefix="s" uri="/struts-tags"%>
<html>
	<head>
		<title>ajax and struts2</title>
		<SCRIPT type="text/javascript">
			var count = 0;		//计数器,防止用户多次点击button
			var xmlHttpReq;		//XMLHttpRequest 对象
			function showHistory(name){			//显示历史记录的函数
				if(count > 0) {		//多次点击无效
					return
				}
				if(window.XMLHttpRequest) {// code for IE7+, Firefox, Chrome, Opera, Safari
  					xmlHttpReq = new XMLHttpRequest()
  				}
  				else {// code for IE6, IE5
  					xmlHttpReq = new ActiveXObject("Microsoft.XMLHTTP")
  				}
				if(xmlHttpReq != null) {
		  			xmlHttpReq.onreadystatechange = onResponse	//存储函数(或函数名),每当 readyState 属性改变时,就会调用该函数
		  			xmlHttpReq.open("POST","Record_ShowRentHistory?name="+name+"",true)	//使用post方式请求并传递name
		  			xmlHttpReq.send()	//	将请求发送到服务器
  				}
			}
			
			function onResponse() {		
		  		if(xmlHttpReq.readyState == 4) {	//请求已完成,且响应已就绪
		  			if(xmlHttpReq.status == 200) {	//200: "OK";404: 未找到页面
		  				x = xmlHttpReq.responseXML.getElementsByTagName("column");	//得到column标签
		  				if(x.length > 0) {		//xml文件含有数据
		  					var tableshow = document.getElementById('historytable');
		  					tableshow.style.display=""	//原来设置为不显示table,有数据则显示table
		  					for(i=0;i<x.length;i++) {	//循环读取xml文件中的数据
				  				try{
			  						var tablex =document.getElementById('historytable').insertRow(i+1)	//table增加一行
			  						tablex.align="center"	//数据居中显示
			  						var insertName = tablex.insertCell(0)	//第一列,依次类推
			  						var insertId = tablex.insertCell(1)
			  						var insertBikeId = tablex.insertCell(2)
			  						var insertStartTime= tablex.insertCell(3)
			  						var insertEndTime= tablex.insertCell(4)
			  						var insertAllTime = tablex.insertCell(5)
			  						var insertRentPrice = tablex.insertCell(6)
			  						var insertAllMoney = tablex.insertCell(7)
			  						x0=x[i].getElementsByTagName("name");	//将数据依次填充到表格中
			  						txt = x0[0].firstChild.nodeValue;
			  						insertName.innerHTML=txt
			  						x1=x[i].getElementsByTagName("id");
			  						txt = x1[0].firstChild.nodeValue;
			  						insertId.innerHTML=txt
			  						x2=x[i].getElementsByTagName("bikeID");
			  						txt = x2[0].firstChild.nodeValue;
			  						insertBikeId.innerHTML=txt
			  						x3=x[i].getElementsByTagName("startTime");
			  						txt = x3[0].firstChild.nodeValue;
			  						insertStartTime.innerHTML=txt
			  						x4=x[i].getElementsByTagName("endTime");
			  						txt = x4[0].firstChild.nodeValue;
			  						insertEndTime.innerHTML=txt
			  						x5=x[i].getElementsByTagName("allTime");
			  						txt = x5[0].firstChild.nodeValue;
			  						insertAllTime.innerHTML=txt
			  						x6=x[i].getElementsByTagName("rentPrice");
			  						txt = x6[0].firstChild.nodeValue;
			  						insertRentPrice.innerHTML=txt
			  						x7=x[i].getElementsByTagName("allMoney");
			  						txt = x7[0].firstChild.nodeValue;
			  						insertAllMoney.innerHTML=txt
			  					} 
			  					catch(er) {
			  						alert('error')
			  					}
			  					count++;
		  					}
			  			}
		  			}
		  		}
		  	}
		</SCRIPT>
	</head>
	<body>
		<button onclick="showHistory('<s:property value="name"/>')">
			显示历史租车记录
		</button>
		<table align="center" border="5" id="historytable"
			style="display: none">
			<tr align="center">
				<td>
					用户名
				</td>
				<td>
					租赁编号
				</td>
				<td>
					自行车编号
				</td>
				<td>
					租车起始时间
				</td>
				<td>
					租车结束时间
				</td>
				<td>
					时间差(小时)
				</td>
				<td>
					租赁价格(X元/每小时)
				</td>
				<td>
					消费金额
				</td>
			</tr>
		</table>
		</center>
	</body>
</html>


struts2中的action
/**
	 * 处理利用ajax的异步请求方法
	 */
	public String executeShowRentHistory() throws Exception{
		HttpServletResponse hsr =  ServletActionContext.getResponse();
		hsr.setContentType("text/xml;charset=gbk");
		StringBuffer sb = new StringBuffer();
		sb.append("<?xml version=\"1.0\"?>");	//添加xml文件头
		sb.append("<history>");		//根标签
		records = recordManager.getHistoryData(name);	//调用service层,返回一个list
		for(Record record: records) {			//封装成xml文件
			sb.append("<column>");
			sb.append("<name>"+name+"</name>");
			sb.append("<id>"+record.getId()+"</id>");
			sb.append("<bikeID>"+record.getBike().getId()+"</bikeID>");
			sb.append("<startTime>"+record.getStartTime()+"</startTime>");
			sb.append("<endTime>"+record.getEndTime()+"</endTime>");
			double allTime = Calculate.calculateTime(record.getStartTime(), record.getEndTime());	//计算时间差(结束时间减去起始时间)
			sb.append("<allTime>"+allTime+"</allTime>");
			sb.append("<rentPrice>"+record.getRentPrice()+"</rentPrice>");
			sb.append("<allMoney>"+record.getRentPrice()*allTime+"</allMoney>");
			sb.append("</column>");
		}
		sb.append("</history>");
		try {
			hsr.getWriter().write(sb.toString());	//转换成字符串给response返回
		} catch (Exception e) {
			e.printStackTrace();
		}
		finally {
			hsr.getWriter().close();
		}
		return null;	//不需要返回任何字符串给result
	}

还有一些get和set方法,以及service层和dao层未给出
算是一个简单的struts2和ajax的整合吧,后台是ssh2+mysql,初学者,请指教
分享到:
评论

相关推荐

    struts2的Ajax实现注册验证

    这篇文档“struts与ajax.docx”可能包含了如何将Struts2和Ajax结合使用的详细步骤。通常,这个过程会涉及以下几个关键点: 1. **Struts2配置**:首先,需要在`struts.xml`配置文件中定义一个Action,这个Action将...

    struts2ajax项目

    在Struts2框架中整合Ajax,可以实现异步数据交互,提高应用的响应速度和交互性。 本项目"struts2ajax"是基于Struts2框架,利用jQuery库实现的Ajax功能示例。jQuery是一个轻量级的JavaScript库,它简化了DOM操作、...

    Struts-Ajax整合案例

    综上所述,Struts2和AJAX的整合是提高Web应用交互性和效率的有效手段。通过理解它们的基本原理和整合方法,开发者可以创建出更高效、更具吸引力的Web应用。在实际开发中,还需要不断学习和实践,以便更好地应对各种...

    用案例学Java Web整合开发:Java+Eclipse+Struts 2+Ajax

    Java Web整合开发是构建Web应用程序的关键技术,涵盖了Java语言、Eclipse集成开发环境(IDE)、Struts 2框架以及Ajax异步JavaScript和XML技术。这个主题深入探讨了这些技术如何协同工作,创建出高效、用户友好的Web...

    struts2和ajax整合

    ### Struts2与Ajax整合详解 #### 一、引言 在现代Web开发中,Ajax技术因其能够实现页面局部刷新而被广泛应用于提高用户体验。Struts2作为一款成熟的Java Web应用框架,在处理业务逻辑方面有着良好的表现。将Struts...

    Struts2与AJAX

    总结来说,Struts2通过与AJAX的整合以及JSON插件的使用,极大地提升了Web应用的用户体验。它不仅提供了简单的API和工具,使得开发者可以快速地实现AJAX功能,同时还能充分利用现有的JSON库和浏览器的JSON支持,降低...

    Struts2之ajax初析的并结合jquery一个例子

    Web2.0的随波逐流,Ajax那是大放异彩,Struts2框架自己整合了对Ajax的原生支持(struts 2.1.7+,之前的版本可以通过插件实现),框架的整合只是使得JSON的创建变得异常简单,并且可以简单的融入到Struts2框架中,...

    Struts2整合jQuery实现Ajax功能

    ### Struts2整合jQuery实现Ajax功能 #### 一、引言 随着Web应用程序的发展,用户对交互性和响应速度的要求越来越高。传统的Web表单提交方式已无法满足这些需求,因此Ajax技术逐渐成为提升用户体验的重要手段之一。...

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

    通过上述步骤,你就可以在Struts2项目中顺利地整合Ajax和JSON,实现前后端的高效数据交互。这个过程中,`json2.js`和`jsonplugin`起到了至关重要的作用,它们让JSON数据在不同的环境中得以顺畅地流动。记得在开发...

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

    总的来说,"Struts2+json+ajax整合例子"是一个实用的教学资源,帮助开发者了解如何在实际项目中利用这些技术进行高效的Web开发。通过学习和实践这个例子,开发者可以提升其在Web应用程序开发中的技能。

    Struts 2整合Ajax开发

    这只是一个简单的示例,实际上,Struts 2和Ajax的整合可以实现更复杂的功能,如分页、数据表格的异步加载、实时验证等。整合这两者,开发者可以构建出既高效又具有交互性的Web应用,提供更好的用户体验。在实际项目...

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

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

    Struts2整合jQuery实现Ajax功能.doc

    总结来说,Struts2整合jQuery实现Ajax功能,可以让前端和后端之间进行无缝通信,提供更加动态的用户体验。通过使用jQuery简化Ajax操作,开发者可以专注于业务逻辑而不是繁琐的异步请求处理。同时,Struts2的Action...

    struts2+ajax+easyui+json+datagrid增删改查

    在Struts2和前端之间传输数据时,通常会使用JSON格式,因为它可以快速地被JavaScript处理,而无需额外的解析步骤。 **DataGrid** 是EasyUI中的核心组件,用于显示和操作表格数据。它可以动态加载数据,支持Ajax请求...

    ZTree+Struts2+ajax+json实现checkbox权限树

    综上所述,这个项目展示了如何整合前端的ZTree、Struts2框架,以及Ajax和JSON技术,实现一个动态的、基于checkbox的权限树,优化了权限管理的用户体验,同时通过存储过程减少了对数据库的频繁访问,提升了系统性能。

    struts2+ajaxForm

    6. **测试和调试**:在testAjaxForm目录中的文件可能包含了一个测试用例,用于验证Struts2和AjaxForm的整合功能。这可能包括一个简单的HTML表单,对应的Action类,以及可能的JavaScript和CSS文件。开发者可以通过...

    struts2中使用ajax

    2. **Struts2与Ajax整合**: Struts2框架通过Struts2-jQuery插件或Struts2-Conventions插件来支持Ajax功能。这两个插件提供了方便的标签库,使得在JSP页面中使用Ajax变得更加简单。 3. **Struts2-jQuery插件**: ...

    Struts2 spring hibernate ajax整合实例

    Struts2、Spring和Hibernate是Java Web开发中的三大框架,它们各自解决了一部分问题,而将它们整合起来,可以构建出高效、灵活的企业级应用程序。本实例将详细讲解如何将这三个框架与Ajax技术进行整合,以实现数据的...

    Struts 2.2.1的Ajax整合jQuery 1.4和Dojo 2.0框架的编程示例

    说明:Struts2天生成Spring整合的,所在“整容”之后,Struts2的使用看上去比较简单;它与客户端的Ajax框架的整合也非常容易;本示例整合了jQuery 1.4版本框架,同时也使用dojo框架来完成struts2的属性页标签。 使用...

Global site tag (gtag.js) - Google Analytics