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

Struts2+Jquery+Dom4j实现服务器返回Xml文档

阅读更多

 

Struts2+Jquery+Dom4j实现服务器返回Xml文档

一、为什么要返回一个Xml文档?

:当我们在进行web开发的时候,服务端会发送很多数据信息到客户端。那么用什么容器去承载数据信息了,答案就是XmlXml是一种很标准的数据信息存储容器。不过现在有很多其他的方法,向客户端发送数据。如:JSON

二、如何向客户端返回一个Xml文档?

1.首先我们要将数据信息存储在一个xml文件中

2.在struts2中通过ActionServletContext类的getResponse()方法获取一个 HttpServletResponse对象

通过HttpServletResponse对象的getWriter()方法获取PrintWriter对象 之后使用XmlWriter 将xml文档对象 写入到PrintWriter中 之后返回给客户端

 

三、需要什么配置?

:  1.struts2必要的jar包

  2.dom4j的jar包

  3.jquery需要的js文件

  dom4j下载地址 

http://sourceforge.net/projects/dom4j/files/dom4j/1.6.1/dom4j-1.6.1.zip/download

  四、给出具体实例

 

JavaBean(Person)
				package org.viancent.domain;

				public class Person {
					private int pid;
					private String pname;
					private int page;
					private String address;

					public int getPid() {
						return pid;
					}

					public void setPid(int pid) {
						this.pid = pid;
					}

					public String getPname() {
						return pname;
					}

					public void setPname(String pname) {
						this.pname = pname;
					}

					public int getPage() {
						return page;
					}

					public void setPage(int page) {
						this.page = page;
					}

					public String getAddress() {
						return address;
					}

					public void setAddress(String address) {
						this.address = address;
					}
				}

 Action:(GetXmlAction)

package org.viancent.action;

import java.io.PrintWriter;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts2.ServletActionContext;
import org.dom4j.Document;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.XMLWriter;
import org.viancent.domain.Person;
import com.opensymphony.xwork2.ActionSupport;

public class GetInfoAction extends ActionSupport {
	private static final long serialVersionUID = 1L;
	private String name; // 此属性用于接收页面的数据信息进行判断 返回结果
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}

	@Override
	public String execute() throws Exception {

		// create new person
		// zhangsan
		Person person1 = new Person();
		person1.setPid(1);
		person1.setPname("zhangsan");
		person1.setPage(20);
		person1.setAddress("武汉");
		// lisi
		Person person2 = new Person();
		person2.setPid(2);
		person2.setPname("lisi");
		person2.setPage(30);
		person2.setAddress("上海");

		// create new XmlObject use dom4j
		// 1.get document by documenthelper
		Document document = DocumentHelper.createDocument();
		// create a comment
		document.addComment("This is a Xml!");
		// create root Element
		Element rootElement = document.addElement("Users");
		// create child Element by root Element
		Element childElement = rootElement.addElement("User");
		// create id Element by child Element
		Element idElement = childElement.addElement("id");
		// create name Element by child Element
		Element nameElement = childElement.addElement("name");
		// create age Element by child Element
		Element ageElement = childElement.addElement("age");
		// create address Element by child Element
		Element addressElement = childElement.addElement("address");
		// check name
		if ("zhangsan".equals(this.getName())) {
			idElement.setText(person1.getPid() + "");
			nameElement.setText(person1.getPname());
			ageElement.setText(person1.getPage() + "");
			addressElement.setText(person1.getAddress());
		} else {
			idElement.setText(person2.getPid() + "");
			nameElement.setText(person2.getPname());
			ageElement.setText(person2.getPage() + "");
			addressElement.setText(person2.getAddress());
		}

		// use XMLWriter and HttpServletResponse
		// get HttpServletResponse
		HttpServletResponse response = ServletActionContext.getResponse();
		// 设置返回文本的类型
		response.setContentType("text/xml ; charset=utf-8");
		/*
		 * 这里一定要设定ContentType,不然客户端无法辨识服务端的发送的信息类型。
		 */
		response.setHeader("Cache-Control", "no-cache");
		/*
		 * 设定不需要缓存
		 */
		// get PrintWriter
		PrintWriter out = response.getWriter();
		// 创建排版规则
		OutputFormat format = OutputFormat.createPrettyPrint();
		format.setEncoding("UTF-8");// 设置xml文档的编码格式
		// 开始写入数据信息
		XMLWriter writer = new XMLWriter(out, format);
		// 通过XmlWriter的构造函数,将Xml文档对象写入到PrintWriter中,实现返回
		writer.write(document);
		// 清空流
		out.flush();
		// 关闭流
		out.close();
		return null;// 因为是使用jquery进行的异步提交,所以不需要进行跳转
	}
}

 struts.xml

			
	<package name="struts2"  extends="struts-default">
	<action name="getinfos" class="org.viancent.action.GetXmlAction"> 
        </action>
	//这里不需要定义Action的<result>标签 因为是异步提交的方式
       </package>

 JSP:

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<script type="text/javascript" src="WEB-JS/jquery-1.5.1.js"></script>
<script type="text/javascript">
				function getInfo() {
				$.post("/struts2/getjsons.action",//指定异步提交的地址
					{
						name:$("#info").val() //获取<select>中选定的<option>的值 用于传给客户端
						},
						function(returnedData, status) {
						if ("success" == status) {
						var id = $(returnedData).find("id").text();
						/*
							 $(returnedData).find("id").text()
							 获取returnedData中id标签的中的内容
						*/
						var name = $(returnedData).find("name").text();
						var age = $(returnedData).find("age").text();
						var address = $(returnedData).find("address").text();

						var html = "<table width='60%' align='center' border='1'><tr><th>ID</th><th>NAME</th><th>AGE</th><th>ADDRESS</th></tr><tr align='center'><td>"
								+ id
								+ "</td><td>"
								+ name
								+ "</td><td>"
								+ age
								+ "</td><td>"
								+ address
								+ "</td></tr></table>"
						$("body table:eq(0)").remove();//移除Body中的第一个table
						$("#theBody").append(html);//将创建的table信息添加到body的尾部
						}
					});				
				}
				</script>
</head>

<body id="theBody">
	<select id="info">
		<%--选择获取谁的信息--%>
		<option value="zhangsan" selected="selected">zhangsan</option>
		<option value="lisi">lisi</option>
	</select>
	<input type="button" value="GetInfo" onclick="getInfo();">
</body>
</html>
 

 

 

分享到:
评论

相关推荐

    Struts2+jQuery(不用JSON)实现局部刷新

    4. **Struts2与jQuery的集成**: - **Struts2的JSON插件**:虽然题目要求不使用JSON,但通常情况下,Struts2通过JSON插件返回数据给jQuery是最方便的方式。不过,我们可以通过设置Content-Type为"text/plain"或...

    Struts2+Jquery+Ajax

    在Struts2框架下,我们可以使用Jquery的Ajax方法向服务器发送请求,获取JSON或XML数据,然后动态更新页面的部分内容。 在"06-mvc之struts2.ppt"中,可能涵盖了以下内容: 1. Struts2框架的基本概念和架构 2. 如何...

    struts2+ajax+jquery

    在这个"struts2+ajax+jquery"的主题中,我们将深入探讨如何利用Struts2、jQuery和Ajax技术实现Web页面的异步交互。 首先,Struts2作为MVC框架,它的核心是Action,它负责处理用户的请求,并通过配置的Result返回...

    Struts2+JSON+JQuery实现简单的验证

    5. **JQuery验证**:在Ajax的success回调函数中,接收到服务器返回的JSON数据后,根据返回的“success”或“error”判断验证结果。如果验证失败,显示错误信息;如果成功,可以继续进行提交或者跳转到其他页面。 6....

    Struts2+jquery

    例如,我们可以使用jQuery的`.ajax()`方法发送POST或GET请求到Struts2 Action,获取服务器端数据并动态更新页面。 GET和POST是HTTP协议中的两种基本请求方法。在Struts2中,Action可以通过注解或配置文件指定处理...

    一个简单的struts2+json+jquery 交互的例子

    Struts2、JSON和jQuery是Web开发中常用的三个技术,它们在构建动态、交互式的Web应用程序时发挥着关键作用。这个例子将展示如何整合这三个工具,实现前后端的数据交换。 首先,Struts2是一个强大的MVC(Model-View-...

    struts2+JQuery完整集成lib包

    4. **Struts2-jQuery插件**:这个插件包括了一系列JSP标签,如sj:ajax,sj:autocompleter等,这些标签可以直接嵌入到视图层,为开发者提供了一种声明式的方式来创建Ajax交互。它还提供了预定义的CSS和JavaScript资源...

    购物车(struts2+jquery)

    【购物车(struts2+jquery)】是一个典型的Web应用程序示例,主要展示了如何使用Struts2框架与jQuery库来实现动态、交互式的购物车功能。这个项目特别适合那些想要学习或加深对AJAX技术理解的开发者。接下来,我们将...

    使用struts2+JQuery实现的简单的ajax例子

    在这个简单的Ajax例子中,我们将探讨如何整合Struts2和jQuery来实现页面无刷新的数据更新。 首先,我们需要在项目中引入Struts2和jQuery的相关依赖。Struts2通常通过Maven或Gradle添加依赖库,包括核心库、struts2-...

    zTree树型菜单+Dom4j解析XML+struts2+spring整合_完整树型菜单权限管理案例(附源代码+API学习文档)

    前台页面展示用zTree插件,后台数据用XML保存,利用Dom4j进行解析,涉及到了对XML的增、删、改等等特别需求的技术,并用struts2+spring进行整合项目,源代码中有非常完整的注释,导入myEclipse部署运行,即可从...

    struts2+jquery+ajax实现头像上传切割图片

    "Struts2+jQuery+Ajax实现头像上传切割图片"是一个典型的Web开发技术组合,它结合了Struts2作为后端MVC框架,jQuery作为前端JavaScript库,以及Ajax进行异步数据传输,来提供流畅的图片上传和裁剪功能。以下将详细...

    struts2+jquery+ajax文件异步上传

    6. 更新UI:jQuery根据服务器返回的响应更新页面,显示上传状态。 最后,关于"testup"这个文件,可能是项目中的测试文件或者配置文件,具体用途可能包括测试文件上传功能、存储上传文件的示例,或者是项目的一些...

    struts2+jquery无刷新取后台数据

    在这里,"struts2+jquery无刷新取后台数据"的实现主要是利用Ajax技术,结合Struts2的Action和Result,实现在用户界面上的无刷新交互。 首先,登录功能是Web应用的基础。在Struts2中,我们可以创建一个登录Action类...

    Struts2+Jquery+Mysql+20120925

    Struts2框架的核心部分包括Action类、配置文件(struts.xml)、Interceptor拦截器、Result结果类型等。Action类是业务逻辑的载体,它接收用户请求并处理,然后返回一个Result。配置文件用于定义Action与URL的映射,...

    Struts2+jQuery+ajax+mySql实现省市二级联动

    本篇文章将深入探讨如何使用Struts2、jQuery、ajax以及MySQL来实现这一功能。 首先,Struts2是一款强大的MVC(模型-视图-控制器)框架,它简化了Java Web开发。在省市联动的场景中,Struts2主要负责处理用户的请求...

    struts2+spring+hibernate+jquery+json

    Struts2、Spring、Hibernate、jQuery 和 JSON 是五个在IT行业中极为重要的技术组件,它们各自在Web应用开发中扮演着不同的角色。这篇文章将详细介绍这些技术的整合使用以及它们的功能。 首先,Struts2 是一个基于 ...

    struts2 + jquery +ajax 登录验证

    Struts2、jQuery和Ajax是Web开发中的三大关键技术,它们结合使用可以构建高效、动态且用户友好的登录验证系统。以下是对这些技术及其在登录验证中的应用的详细说明。 Struts2是一个基于MVC(Model-View-Controller...

    struts2+jquery执行ajax并返回json类型数据(源码)

    Struts2和jQuery是Web开发中的两个重要框架,它们结合使用可以实现动态、交互式的用户界面。在这个"struts2+jquery执行ajax并返回json类型数据"的示例中,我们将探讨如何通过Ajax技术在后台Struts2框架与前端jQuery...

    struts2+jquery多文件上传显示进度条,可直接运行(非常强大)

    Struts2和jQuery结合实现的多文件上传功能是一种常见的Web开发技术,特别是在处理大量数据时,用户需要上传多个文件的情况。这个项目的核心是利用Struts2的Action支持和jQuery的AJAX功能,以及一个用于展示进度条的...

    网页聊天(struts2+jquery)

    【网页聊天(struts2+jquery)】是一个典型的Web应用程序示例,用于演示如何通过集成Struts2框架和jQuery库实现在网页上的实时聊天功能。这个项目被设计为一个MyEclipse工程,包含了所有必要的资源文件和依赖库,对...

Global site tag (gtag.js) - Google Analytics