AJAX——连接数据库并且返回XML数据

来源:互联网 发布:淘宝怎么做好关键词 编辑:程序博客网 时间:2024/05/29 08:41

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+, SafarixmlHttp = new XMLHttpRequest();} catch (e) {// Internet Explorertry {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的代码。

0 0
原创粉丝点击