AJAX——连接数据库并且返回XML数据
2015-01-06 14:40
274 查看
AJAX可以返回xml数据,现在用的比较多的是json表达式。连接数据库需要用到驱动的jar包。提前加到lib文件夹下。
<html>
<head>
<script src="js/selectcustomer_xml.js"></script>
</head>
<body>
<form action="">
<label>选择客户: <select name="customers"
onchange="showCustomer(this.value)">
<option value="1">Alfreds Futterkiste</option>
<option value="2">North/South</option>
<option value="3">Wolski Zajazd</option>
</select>
</label>
</form>
<b><span id="companyname"></span>
</b>
<br />
<span id="contactname"></span>
<br />
<span id="address"></span>
<span id="city"></span>
<br />
<span id="country"></span>
</body>
</html>js文件如下:
var xmlHttp;
function showCustomer(str) {
//alert(str);
xmlHttp = GetXmlHttpObject();
if (xmlHttp == null) {
alert("Your browser does not support AJAX!");
return;
}
var url = "jsp/getcustomer_xml.jsp";
url = url + "?q=" + str;
url = url + "&sid=" + Math.random();
xmlHttp.onreadystatechange = stateChanged;
xmlHttp.open("GET", url, true);
xmlHttp.send(null);
}
function stateChanged() {
if (xmlHttp.readyState == 4) {
alert(xmlHttp.responseText);
alert(xmlHttp.responseXML.documentElement);
var xmlDoc = xmlHttp.responseXML.documentElement;
alert(xmlDoc.getElementsByTagName("compname")[0]);
document.getElementById("companyname").innerHTML = xmlDoc
.getElementsByTagName("compname")[0].childNodes[0].nodeValue;
document.getElementById("contactname").innerHTML = xmlDoc
.getElementsByTagName("contname")[0].childNodes[0].nodeValue;
document.getElementById("address").innerHTML = xmlDoc
.getElementsByTagName("address")[0].childNodes[0].nodeValue;
document.getElementById("city").innerHTML = xmlDoc
.getElementsByTagName("city")[0].childNodes[0].nodeValue;
document.getElementById("country").innerHTML = xmlDoc
.getElementsByTagName("country")[0].childNodes[0].nodeValue;
}
}
function GetXmlHttpObject() {
var xmlHttp = null;
try {
// Firefox, Opera 8.0+, Safari
xmlHttp = new XMLHttpRequest();
} catch (e) {
// Internet Explorer
try {
xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {
xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
}
}
return xmlHttp;
}jsp文件如下:
<%@ page pageEncoding="UTF-8" import="java.sql.*,java.io.*" %>
<%
String q = request.getParameter("q");
System.out.println(q);
Connection conn = null;
Statement stmt = null;
try{
String url= "jdbc:mysql://localhost:3306/test?user=root&password=root&useUnicode=true&characterEncoding=GB2312";
Class.forName("com.mysql.jdbc.Driver").newInstance();
conn= DriverManager.getConnection(url);
String sql="SELECT * FROM CUSTOMERS ";
sql=sql+" WHERE CUSTOMERID='"+q+"'";
stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery(sql);
response.setCharacterEncoding("utf-8");
response.setHeader("ContentType","text/xml");
response.setContentType("text/xml;charset=utf-8");
//out.clear();
PrintWriter out1 = response.getWriter();
//out1.flush();
out1.print("<?xml version='1.0' encoding='UTF-8'?>");
while(rs.next()){
System.out.println(rs.getString("companyname"));
out1.print("<company>");
out1.print("<compname>" +rs.getString("companyname")+ "</compname>");
out1.print("<contname>" +rs.getString("contactname")+ "</contname>");
out1.print("<address>" +rs.getString("address")+ "</address>");
out1.print("<city>" +rs.getString("city")+ "</city>");
out1.print("<country>"+rs.getString("country")+ "</country>");
out1.print("</company>");
}
out1.flush();
}catch(Exception e){
out.print(e.getMessage());
}finally{
stmt.close();
conn.close();
}
%>
需要注意的是,处理xml时最好使用servlet。如果用jsp的时候设置如下:
response.setCharacterEncoding("utf-8");
response.setHeader("ContentType","text/xml");
response.setContentType("text/xml;charset=utf-8");这时候如果这个jsp文件中有html的标签和设置。返回的xml将无法读取。因此在这里把html和head标签全部去掉了。仅留下了jsp的代码。
<html>
<head>
<script src="js/selectcustomer_xml.js"></script>
</head>
<body>
<form action="">
<label>选择客户: <select name="customers"
onchange="showCustomer(this.value)">
<option value="1">Alfreds Futterkiste</option>
<option value="2">North/South</option>
<option value="3">Wolski Zajazd</option>
</select>
</label>
</form>
<b><span id="companyname"></span>
</b>
<br />
<span id="contactname"></span>
<br />
<span id="address"></span>
<span id="city"></span>
<br />
<span id="country"></span>
</body>
</html>js文件如下:
var xmlHttp;
function showCustomer(str) {
//alert(str);
xmlHttp = GetXmlHttpObject();
if (xmlHttp == null) {
alert("Your browser does not support AJAX!");
return;
}
var url = "jsp/getcustomer_xml.jsp";
url = url + "?q=" + str;
url = url + "&sid=" + Math.random();
xmlHttp.onreadystatechange = stateChanged;
xmlHttp.open("GET", url, true);
xmlHttp.send(null);
}
function stateChanged() {
if (xmlHttp.readyState == 4) {
alert(xmlHttp.responseText);
alert(xmlHttp.responseXML.documentElement);
var xmlDoc = xmlHttp.responseXML.documentElement;
alert(xmlDoc.getElementsByTagName("compname")[0]);
document.getElementById("companyname").innerHTML = xmlDoc
.getElementsByTagName("compname")[0].childNodes[0].nodeValue;
document.getElementById("contactname").innerHTML = xmlDoc
.getElementsByTagName("contname")[0].childNodes[0].nodeValue;
document.getElementById("address").innerHTML = xmlDoc
.getElementsByTagName("address")[0].childNodes[0].nodeValue;
document.getElementById("city").innerHTML = xmlDoc
.getElementsByTagName("city")[0].childNodes[0].nodeValue;
document.getElementById("country").innerHTML = xmlDoc
.getElementsByTagName("country")[0].childNodes[0].nodeValue;
}
}
function GetXmlHttpObject() {
var xmlHttp = null;
try {
// Firefox, Opera 8.0+, Safari
xmlHttp = new XMLHttpRequest();
} catch (e) {
// Internet Explorer
try {
xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {
xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
}
}
return xmlHttp;
}jsp文件如下:
<%@ page pageEncoding="UTF-8" import="java.sql.*,java.io.*" %>
<%
String q = request.getParameter("q");
System.out.println(q);
Connection conn = null;
Statement stmt = null;
try{
String url= "jdbc:mysql://localhost:3306/test?user=root&password=root&useUnicode=true&characterEncoding=GB2312";
Class.forName("com.mysql.jdbc.Driver").newInstance();
conn= DriverManager.getConnection(url);
String sql="SELECT * FROM CUSTOMERS ";
sql=sql+" WHERE CUSTOMERID='"+q+"'";
stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery(sql);
response.setCharacterEncoding("utf-8");
response.setHeader("ContentType","text/xml");
response.setContentType("text/xml;charset=utf-8");
//out.clear();
PrintWriter out1 = response.getWriter();
//out1.flush();
out1.print("<?xml version='1.0' encoding='UTF-8'?>");
while(rs.next()){
System.out.println(rs.getString("companyname"));
out1.print("<company>");
out1.print("<compname>" +rs.getString("companyname")+ "</compname>");
out1.print("<contname>" +rs.getString("contactname")+ "</contname>");
out1.print("<address>" +rs.getString("address")+ "</address>");
out1.print("<city>" +rs.getString("city")+ "</city>");
out1.print("<country>"+rs.getString("country")+ "</country>");
out1.print("</company>");
}
out1.flush();
}catch(Exception e){
out.print(e.getMessage());
}finally{
stmt.close();
conn.close();
}
%>
需要注意的是,处理xml时最好使用servlet。如果用jsp的时候设置如下:
response.setCharacterEncoding("utf-8");
response.setHeader("ContentType","text/xml");
response.setContentType("text/xml;charset=utf-8");这时候如果这个jsp文件中有html的标签和设置。返回的xml将无法读取。因此在这里把html和head标签全部去掉了。仅留下了jsp的代码。
相关文章推荐
- 如何用 ajax 连接mysql数据库,并且获取从中返回的数据。ajax获取从mysql返回的数据。responseXML分别输出不同数据的方法。
- ajax传参给php,php连接服务器数据库并返回数据过程详解
- AJAX服务器返回数据 连接数据库查询数据
- 3个java类:连接数据库类,获取文件后缀类,从数据库中读入数据生成XML文件
- 09---Ajax03(返回xml数据)
- AJAX建立和服务器连接,接收服务器技术处理服务器返回的数据
- Ajax返回XML数据
- AJAX示例应用-2(两级菜单的联动)-方式3(服务器返回XML数据,真正的AJAX应用)
- Ajax实现xml文件数据插入数据库(三)---javabean实现数据库插入
- ajax(二) ajax处理返回数据格式xml 实例
- Ajax实现xml文件数据插入数据库(二)--- ajax实现与jsp的数据交互。
- Ajax实现xml文件数据插入数据库(一)--- 构建解析xml文件的js库
- 数据库操作_连接SQL Server数据库示例;连接ACCESS数据库;连接到 Oracle 数据库示例;SqlCommand 执行SQL命令示例;SqlDataReader 读取数据示例;使用DataAdapter填充数据到DataSet;使用DataTable存储数据库表;将数据库数据填充到 XML 文件;10 使用带输入参数的存储过程;11 使用带输入、输出参数的存储过程示;12 获得数据库中表的数目和名称;13 保存图片到SQL Server数据库示例;14 获得插入记录标识号;Exce
- 1.AJAX:客户端(服务器返回的是XML数据格式)
- 将业务系统数据库的数据显示在页面上并且作WebPart的跨页面连接
- AJAX用jquery解析servlet返回回来的XML 数据
- Hibernate.cfg.xml配置Hibernate连接数据库和对应的数据表
- Ajax几个简单的案例(ajax_用户唯一验证、ajax_返回xml数据的处理(包括分页处理)
- ajax请求Struts2返回xml数据方法
- 初涉Ajax,以post或get方法发送数据,以json或xml形式接收服务器返回的请求