案例:

index.jsp

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme() + "://"
+ request.getServerName() + ":" + request.getServerPort()
+ path + "/";
%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>"> <title>My JSP 'index.jsp' starting page</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<script type="text/javascript"
src="<%=path%>/script/jquery-1.8.3.min.js"></script>
<script type="text/javascript"> function sendXML(){
var xmlStr = "<driverInfo>";
xmlStr = xmlStr + "<driverClassName>com.sqlserver.driver.SQLServerDriver</driverClassName>";
xmlStr = xmlStr + "<url>jdbc:sqlserver://127.0.0.1:xxx</url>";
xmlStr = xmlStr + "<username>sa</username>";
xmlStr = xmlStr + "<password>1</password>";
xmlStr = xmlStr + "</driverInfo>"; var data={
"xmlStr":xmlStr
}; var sendURL="<%=path%>/servlet/xmlSevlet?date=" + new Date() + ""; jQuery.post(sendURL, data, function(xmlData) { //从服务端接收到一个xml对象
var userArray = xmlData.getElementsByTagName("userinfo");
var optionHTML="";
for (var i = 0; i < userArray.length; i++) { var userElement=userArray[i]; var userid=userElement.getAttribute("userid");
var username=userElement.getElementsByTagName("username")[0].firstChild.nodeValue;
var age=userElement.getElementsByTagName("age")[0].firstChild.nodeValue; optionHTML=optionHTML+"<option value="+userid+">"+username+"="+age+"</option>"; $("#userselect").html(optionHTML); //改变id为userselect的标签的内容
} }, "xml"); }
</script>
</head> <body>
使用ajax来发送与接收XML的数据 <input type="button" name="button1" id="button1" value="发送与接收XML"
onclick="sendXML();" /> <select id="userselect" style="width: 200px;"></select>
</body>
</html>

XmlServlet.java

package servlet;

import java.io.IOException;
import java.io.PrintWriter; import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.DocumentHelper;
import org.dom4j.Element; public class XmlSevlet extends HttpServlet { /**
* The doGet method of the servlet. <br>
*
* This method is called when a form has its tag value method equals to get.
*
* @param request
* the request send by the client to the server
* @param response
* the response send by the server to the client
* @throws ServletException
* if an error occurred
* @throws IOException
* if an error occurred
*/
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException { this.doPost(request, response);
} /**
* The doPost method of the servlet. <br>
*
* This method is called when a form has its tag value method equals to
* post.
*
* @param request
* the request send by the client to the server
* @param response
* the response send by the server to the client
* @throws ServletException
* if an error occurred
* @throws IOException
* if an error occurred
*/
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException { request.setCharacterEncoding("UTF-8");
response.setContentType("text/html;charset=UTF-8"); // 获取客户端传过来的xml字符串,并解析为xml对象
String xml_str = request.getParameter("xmlStr");
try {
Document document = DocumentHelper.parseText(xml_str); Element rootElement = document.getRootElement(); Element element1 = rootElement.element("driverClassName");
Element element2 = rootElement.element("url");
Element element3 = rootElement.element("username");
Element element4 = rootElement.element("password"); System.out.println(element1.getText());
System.out.println(element2.getText());
System.out.println(element3.getText());
System.out.println(element4.getText()); } catch (DocumentException e) {
e.printStackTrace();
} /**
* 要返回一个XML的字符串。客户端的jQuery接收到之后,会自动将XML的字符串转为XML的文档对象。
* 因为JQuery。post(,,,"xml") 会把返回的字符串对象转为xml对象
*/ PrintWriter out = response.getWriter();
StringBuffer str_xml = new StringBuffer();
str_xml.append("<root>");
for (int i = 0; i < 5; i++) {
str_xml.append("<userinfo userid=\""+i+"\">");
str_xml.append("<username>用户"+i+"</username>");
str_xml.append("<age>12</age>");
str_xml.append("</userinfo>");
}
str_xml.append("</root>");
out.print(str_xml.toString());
System.out.println(str_xml.toString());
out.flush();
out.close(); } }

结果:



本章所有代码都在:  链接

(四)XML基础(客户端和服务端发送与接收xml数据)的更多相关文章

  1. Python进阶----SOCKET套接字基础, 客户端与服务端通信, 执行远端命令.

    Python进阶----SOCKET套接字基础, 客户端与服务端通信, 执行远端命令. 一丶socket套接字 什么是socket套接字: ​ ​  ​ 专业理解: socket是应用层与TCP/IP ...

  2. 01--c实现基础客户端和服务端与c++ boost.asio实现对比

    c实现服务端和客户端交互: 学习查阅的博客: https://blog.csdn.net/u011068702/article/details/54380259 https://blog.csdn.n ...

  3. 使用ajax向服务端发送Form中的数据

    前端代码: <form action="" id="myFormUpdate"> <p>宠物名称: <input type=&qu ...

  4. Java基础---Java---网络编程---TCP的传输、客户端和服务端的互访、建立一个文本转换器、编写一个聊天程序

    演示TCP的传输的客户端和服务端的互访 需求:客户端给服务端发送数据,服务端收到后,给客户端反馈信息. 客户端: 1.建立Socket服务,指定要连接方朵和端口 2.获取Socket流中的输出流,将数 ...

  5. netty-4.客户端与服务端心跳

    (原) 第四篇,客户端与服务端心跳 心跳事件有三种,读空闲,写空闲,读写空闲,定义在了IdleState枚举类中,分别为READER_IDLE,WRITER_IDLE,ALL_IDLE 服务端: ma ...

  6. socket小程序写一个客户端,实现给服务端发送hello World字符串,将客户端发送的数据变成大写后返回

    写一个客户端,实现给服务端发送hello World字符串,将客户端发送的数据变成大写后返回 本机id是192.168.xx.xy 服务端 import socket soc = socket.soc ...

  7. Oracle基础知识点——Oracle服务端和客户端

    Oracle服务端 服务端提供oracle服务的实例,其是数据库的核心,用于数据库的管理,对象的管理与存储.数据的存储.查询.数据库资源的监控.监听等一些服务. 例子:比如一台机子上安装了Oracle ...

  8. Android BLE与终端通信(三)——客户端与服务端通信过程以及实现数据通信

    Android BLE与终端通信(三)--客户端与服务端通信过程以及实现数据通信 前面的终究只是小知识点,上不了台面,也只能算是起到一个科普的作用,而同步到实际的开发上去,今天就来延续前两篇实现蓝牙主 ...

  9. c++ 网络编程(一)TCP/UDP windows/linux 下入门级socket通信 客户端与服务端交互代码

    原文作者:aircraft 原文地址:https://www.cnblogs.com/DOMLX/p/9601511.html c++ 网络编程(一)TCP/UDP  入门级客户端与服务端交互代码 网 ...

随机推荐

  1. golang gin解决跨域访问

    package middleware import ( "github.com/gin-gonic/gin" "net/http") func Cors() g ...

  2. wordpress插件开发流程梳理-二

    开发插件的最佳实践 避免命名冲突 当您的插件对变量,函数或类使用相同的名称作为另一个插件时,会发生命名冲突. 幸运的是,您可以使用以下方法避免命名冲突. 程序性 默认情况下,所有变量,函数和类都在全局 ...

  3. vue设置公共常量

    Global.vue <template> </template> <script type="text/javascript"> const ...

  4. Qt编写Onvif搜索及云台控制工具

    一.前言 这个工具很早以前大概在2013年就想做了,后面杂七杂八的事情一再耽搁,记得当时最初用的是soap类来搜索和解析的,后面发现太大了,每次编译都要等好久,光源码文件加起来都快10MB了,而且函数 ...

  5. Django之model详解

    Django中的页面管理后台 Djano中自带admin后台管理模块,可以通过web页面去管理,有点想php-admin,使用步骤: 在项目中models.py 中创建数据库表 class useri ...

  6. python面向对象之花里胡哨大杂烩

    python类的魔法方法之__str__.__repr__.__format__.__module__.__class__.__slots__.__call__.__del__(析构函数) 字符串的内 ...

  7. EasyNetQ使用(六)【多态发布和订阅,消息版本控制】

    你能够订阅一个接口,然后发布基于这个接口的实现. 让我们看下一个示例.我有一个接口IAnimal和两个实现Cat和Dog: public interface IAnimal { string Name ...

  8. react如何在网页上编辑并运行代码?

    最近想做个能在网站,能在网页上运行代码,并且保存这个组件,看了一下element-react的组件和官方的实例,发现都是可以编辑运行的,因为之前没有这方面的经验,所以看下各位大佬能不能给点意见

  9. 高级UI-Palette

    Google推出的Palette是用来调色的,正如其汉语意思一样,可以用来显示颜色,在显示图片的时候,会配合图片的色调来显示,这样就显得很融合,其实Palette可以分析出图片中的很多特性,例如主色调 ...

  10. Mybatis映射文件sql语句注意事项

    1.插入