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>
分享到:
相关推荐
4. **Struts2与jQuery的集成**: - **Struts2的JSON插件**:虽然题目要求不使用JSON,但通常情况下,Struts2通过JSON插件返回数据给jQuery是最方便的方式。不过,我们可以通过设置Content-Type为"text/plain"或...
在Struts2框架下,我们可以使用Jquery的Ajax方法向服务器发送请求,获取JSON或XML数据,然后动态更新页面的部分内容。 在"06-mvc之struts2.ppt"中,可能涵盖了以下内容: 1. Struts2框架的基本概念和架构 2. 如何...
在这个"struts2+ajax+jquery"的主题中,我们将深入探讨如何利用Struts2、jQuery和Ajax技术实现Web页面的异步交互。 首先,Struts2作为MVC框架,它的核心是Action,它负责处理用户的请求,并通过配置的Result返回...
5. **JQuery验证**:在Ajax的success回调函数中,接收到服务器返回的JSON数据后,根据返回的“success”或“error”判断验证结果。如果验证失败,显示错误信息;如果成功,可以继续进行提交或者跳转到其他页面。 6....
例如,我们可以使用jQuery的`.ajax()`方法发送POST或GET请求到Struts2 Action,获取服务器端数据并动态更新页面。 GET和POST是HTTP协议中的两种基本请求方法。在Struts2中,Action可以通过注解或配置文件指定处理...
Struts2、JSON和jQuery是Web开发中常用的三个技术,它们在构建动态、交互式的Web应用程序时发挥着关键作用。这个例子将展示如何整合这三个工具,实现前后端的数据交换。 首先,Struts2是一个强大的MVC(Model-View-...
4. **Struts2-jQuery插件**:这个插件包括了一系列JSP标签,如sj:ajax,sj:autocompleter等,这些标签可以直接嵌入到视图层,为开发者提供了一种声明式的方式来创建Ajax交互。它还提供了预定义的CSS和JavaScript资源...
【购物车(struts2+jquery)】是一个典型的Web应用程序示例,主要展示了如何使用Struts2框架与jQuery库来实现动态、交互式的购物车功能。这个项目特别适合那些想要学习或加深对AJAX技术理解的开发者。接下来,我们将...
在这个简单的Ajax例子中,我们将探讨如何整合Struts2和jQuery来实现页面无刷新的数据更新。 首先,我们需要在项目中引入Struts2和jQuery的相关依赖。Struts2通常通过Maven或Gradle添加依赖库,包括核心库、struts2-...
前台页面展示用zTree插件,后台数据用XML保存,利用Dom4j进行解析,涉及到了对XML的增、删、改等等特别需求的技术,并用struts2+spring进行整合项目,源代码中有非常完整的注释,导入myEclipse部署运行,即可从...
"Struts2+jQuery+Ajax实现头像上传切割图片"是一个典型的Web开发技术组合,它结合了Struts2作为后端MVC框架,jQuery作为前端JavaScript库,以及Ajax进行异步数据传输,来提供流畅的图片上传和裁剪功能。以下将详细...
6. 更新UI:jQuery根据服务器返回的响应更新页面,显示上传状态。 最后,关于"testup"这个文件,可能是项目中的测试文件或者配置文件,具体用途可能包括测试文件上传功能、存储上传文件的示例,或者是项目的一些...
在这里,"struts2+jquery无刷新取后台数据"的实现主要是利用Ajax技术,结合Struts2的Action和Result,实现在用户界面上的无刷新交互。 首先,登录功能是Web应用的基础。在Struts2中,我们可以创建一个登录Action类...
Struts2框架的核心部分包括Action类、配置文件(struts.xml)、Interceptor拦截器、Result结果类型等。Action类是业务逻辑的载体,它接收用户请求并处理,然后返回一个Result。配置文件用于定义Action与URL的映射,...
本篇文章将深入探讨如何使用Struts2、jQuery、ajax以及MySQL来实现这一功能。 首先,Struts2是一款强大的MVC(模型-视图-控制器)框架,它简化了Java Web开发。在省市联动的场景中,Struts2主要负责处理用户的请求...
Struts2、Spring、Hibernate、jQuery 和 JSON 是五个在IT行业中极为重要的技术组件,它们各自在Web应用开发中扮演着不同的角色。这篇文章将详细介绍这些技术的整合使用以及它们的功能。 首先,Struts2 是一个基于 ...
Struts2、jQuery和Ajax是Web开发中的三大关键技术,它们结合使用可以构建高效、动态且用户友好的登录验证系统。以下是对这些技术及其在登录验证中的应用的详细说明。 Struts2是一个基于MVC(Model-View-Controller...
Struts2和jQuery是Web开发中的两个重要框架,它们结合使用可以实现动态、交互式的用户界面。在这个"struts2+jquery执行ajax并返回json类型数据"的示例中,我们将探讨如何通过Ajax技术在后台Struts2框架与前端jQuery...
Struts2和jQuery结合实现的多文件上传功能是一种常见的Web开发技术,特别是在处理大量数据时,用户需要上传多个文件的情况。这个项目的核心是利用Struts2的Action支持和jQuery的AJAX功能,以及一个用于展示进度条的...
【网页聊天(struts2+jquery)】是一个典型的Web应用程序示例,用于演示如何通过集成Struts2框架和jQuery库实现在网页上的实时聊天功能。这个项目被设计为一个MyEclipse工程,包含了所有必要的资源文件和依赖库,对...