<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    java隨記

    堅持就是勝利!

     

    利用jaxp dom 實現 ajax xml 響應

    在某些情況下用 jaxp dom api 實現ajax xml響應會是一個很好的選擇,可以簡化程序.需要用到的jar包javax.xml.parsers.*;?org.w3c.dom.*;javax.xml.transform.*;javax.xml.transform.stream.*;javax.xml.transform.dom.*;
    前兩個包用來創建xml文檔,后面幾個用來轉換到輸出流. 以下簡要說明用到的方法.然后貼出一個完整實例.
    創建新文檔 ??????????? DocumentBuilderFactory factory = DocumentBuilderFactory.
    ???????????????????????????????????????????? newInstance();
    ??????????? DocumentBuilder builder = factory.newDocumentBuilder();
    ???????????
    ??????????? Document doc = builder.newDocument();
    創建root元素?或其它元素????????????Element root = doc.createElement("selects");
    創建根元素??????????????? doc.appendChild(root);? Element的appendChild()方法用來添加子元素
    創建文本結點????????? doc.createTextNode(String textNode)
    在servlet中 通過以下方法轉換到輸出流??????????? Transformer t = TransformerFactory.newInstance().newTransformer();??????????? t.transform(new DOMSource(doc),
    ??????????????????????? new StreamResult(response.getWriter()));



    web.inf 文件配置一個servlet
    <?xml version="1.0" encoding="UTF-8"?>
    <web-app xmlns="http://java.sun.com/xml/ns/j2ee? <display-name>WebModule1</display-name>
    ? <servlet>
    ??? <servlet-name>selectservlet</servlet-name>
    ??? <servlet-class>drownmenu.SelectServlet</servlet-class>
    ? </servlet>
    ? <servlet-mapping>
    ??? <servlet-name>selectservlet</servlet-name>
    ??? <url-pattern>/selectservlet</url-pattern>
    ? </servlet-mapping>
    </web-app>

    jsp頁面
    <%@ page language="java" contentType="text/html; charset=utf-8"%>

    <html>
    ? <head>
    ??? <title>Ajax 聯動下拉框</title>
    ??? <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    ??? <SCRIPT type="text/javascript">
    ??????? var req;
    ??????? window.onload=function(){
    ??????? }

    ??????? function Change_Select()
    ??????? {
    ??????????? var zhi=document.getElementById('state').value;
    ??????????? var url="selectservlet?id="+escape(zhi);
    ??????????? if(window.XMLHttpRequest)
    ??????????? {
    ??????????????? req=new XMLHttpRequest();
    ??????????? }else if(window.ActiveXObject)
    ??????????? {
    ??????????????? req=new ActiveXObject("Microsoft.XMLHTTP");
    ??????????? }

    ??????????? if(req)
    ??????????? {
    ??????????????? req.open("GET",url,true);
    ??????????????? req.onreadystatechange=callback;
    ??????????????? req.send(null);
    ??????????? }
    ??????? }

    ??????? function callback()
    ??????? {
    ??????????? if(req.readyState == 4)
    ??????????? {
    ??????????????? if(req.status == 200)
    ??????????????? {
    ??????????????????? parseMessage();
    ??????????????? }else{
    ??????????????????? alert("Not able to retrieve description"+req.statusText);
    ??????????????? }
    ??????????? }
    ??????? }

    ??????? function parseMessage()
    ??????? {
    ??????????? var xmlDoc=req.responseXML.documentElement;
    ??????????? var xSel=xmlDoc.getElementsByTagName('select');
    ??????????? var select_root=document.getElementById('city');
    ??????????? select_root.options.length=0;

    ??????????? for(var i=0;i<xSel.length;i++)
    ??????????? {
    ??????????????? var xValue=xSel[i].childNodes[0].firstChild.nodeValue;
    ??????????????? var xText=xSel[i].childNodes[1].firstChild.nodeValue;
    ??????????????? var option=new Option(xText,xValue);
    ??????????????? try{
    ??????????????????? select_root.add(option);
    ??????????????? }catch(e){
    ??????????????? }
    ??????????? }


    ??????? }
    ??? </SCRIPT>
    ? </head>

    ? <body>
    ??? <div align="center">
    ??????? <form name="form1" method="post" action="">
    ??????????? <TABLE width="70%" boder="0" cellspacing="0">
    ??????????????? <TR>
    ??????????????????? <TD align="center">Ajax 聯動下拉框</TD>
    ??????????????? </TR>
    ??????????????? <TR>
    ??????????????????? <TD>請選擇省份:
    ??????????????????????? <SELECT name="state" id="state" onChange="Change_Select()">
    ??????????????????????????? <OPTION value="0">未選擇</OPTION>
    ??????????????????????????? <OPTION value="1">湖南</OPTION>
    ??????????????????????????? <OPTION value="2">湖北</OPTION>

    ??????????????????????? </SELECT>
    ??????????????????????? 請選擇城市:
    ??????????????????????? <SELECT name="city" id="city">
    ??????????????????????????? <OPTION value="0">未選擇</OPTION>
    ??????????????????????? </SELECT>
    ??????????????????? </TD>
    ??????????????? </TR>
    ??????????????? <TR><td>&nbsp;</td></TR>
    ??????????? </TABLE>
    ??????? </form>
    ??? </div>
    ? </body>
    </html>

    SelectServlet 類
    package drownmenu;

    import javax.servlet.*;
    import javax.servlet.http.*;
    import java.io.*;
    import java.util.*;
    import javax.xml.parsers.*;
    import org.w3c.dom.*;
    import javax.xml.transform.*;
    import javax.xml.transform.stream.*;
    import javax.xml.transform.dom.*;


    public class SelectServlet extends HttpServlet {

    ??? //Initialize global variables
    ??? public void init() throws ServletException {
    ??? }

    ??? //Process the HTTP Get request
    ??? public void doGet(HttpServletRequest request, HttpServletResponse response) throws
    ??????????? ServletException, IOException {

    ??????? String targetId = request.getParameter("id").toString();
    ??????? response.setCharacterEncoding("UTF-8");
    ??????? response.setContentType("application/xml");
    ??????? try {
    ??????????? DocumentBuilderFactory factory = DocumentBuilderFactory.
    ???????????????????????????????????????????? newInstance();
    ??????????? DocumentBuilder builder = factory.newDocumentBuilder();
    ???????????
    ??????????? Document doc = builder.newDocument();
    ?????????
    ??????????? Element root = doc.createElement("selects");
    ??????????? doc.appendChild(root);

    ??????????? /*
    ??????????????????????? String xml_start="<selects>";
    ??????????????????????? String xml_end="</selects>";
    ??????????????????????? String xml="";*/
    ??????????? if (targetId.equalsIgnoreCase("0")) {

    ??????????????? makeElement(doc, root, new String[] {"未選擇"});
    ??????????????? // xml =??? "<select><value>0</value><text>Unbounded</text></select>";
    ??????????? }
    ??????????? if (targetId.equalsIgnoreCase("1")) {
    ??????????????? makeElement(doc, root, new String[]? {"長沙","岳陽"});


    ??????????????? /* xml =
    ???????????????? "<select><value>1</value><text>Mana Burn</text></select>";
    ???????????????? xml +=
    ???????????????? "<select><value>2</value><text>Death Coil</text></select>";
    ???????????????? xml +=
    ???????????????? "<select><value>3</value><text>Unholy Aura</text></select>";
    ???????????????? xml +=
    ???????????????? "<select><value>4</value><text>Unholy Fire</text></select>";
    ???????????????? */
    ??????????? }
    ??????????? if (targetId.equalsIgnoreCase("2")) {
    ??????????????? makeElement(doc, root, new String[] {"武漢","石堰","襄樊","孝感"});
    ??????????????? /*
    ????????????????? xml =
    ???????????????? "<select><value>1</value><text>Corprxplode</text></select>";
    ????????????????? xml +=
    ???????????????? "<select><value>2</value><text>Raise Dead</text></select>";
    ????????????????? xml +=
    ???????????????? "<select><value>3</value><text>Brilliance Aura</text></select>";
    ????????????????? xml +=
    ???????????????? "<select><value>4</value><text>Aim Aura</text></select>";
    ???????????????? */
    ??????????? } //else {
    ?????????????
    ??????????????? /*
    ?????????????????? xml =
    ???????????????? "<select><value>1</value><text>Rain of Chaos</text></select>";
    ?????????????????? xml +=
    ???????????????? "<select><value>2</value><text>Finger of Death</text></select>";
    ???????????????? xml += "<select><value>3</value><text>Bash</text></select>";
    ?????????????????? xml +=
    ???????????????? "<select><value>4</value><text>Summon Doom</text></select>";
    ???????????????? */
    ???????? //?? }
    ??????
    ??????????? Transformer t = TransformerFactory.newInstance().newTransformer();

    ??????????? t.transform(new DOMSource(doc),
    ??????????????????????? new StreamResult(response.getWriter()));

    ??????? } catch (Exception ex) {
    ??????????? throw new ServletException(ex.toString());
    ??????? }
    ??????? // String last_xml = xml_start + xml + xml_end;
    ??????? // response.getWriter().write(last_xml);
    ??? }

    ??? private void makeElement(Document doc, Element root, String[] name) throws
    ??????????? DOMException {
    ??????? if (name == null) {
    ??????????? return;
    ??????? }

    ??????? for (int i = 0; i < name.length; i++) {
    ??????????? Element selectElement = doc.createElement("select");

    ??????????? root.appendChild(selectElement);

    ??????????? Element valueElement = doc.createElement("value");
    ??????????? Element textElement = doc.createElement("text");
    ??????????? int t=i+1;
    ??????????? Text valueText = doc.createTextNode(""+t);???????????
    ??????????? Text textText = doc.createTextNode(name[i]);
    ??????????? valueElement.appendChild(valueText);
    ??????????? textElement.appendChild(textText);
    ??????????? selectElement.appendChild(valueElement);
    ??????????? selectElement.appendChild(textElement);
    ???????????

    ??????? }

    ??? }

    ??? //Process the HTTP Post request
    ??? public void doPost(HttpServletRequest request, HttpServletResponse response) throws
    ??????????? ServletException, IOException {
    ??????? doGet(request, response);
    ??? }

    ??? //Clean up resources
    ??? public void destroy() {
    ??? }
    }


    歡迎加入QQ群:30406099?

    posted on 2006-06-29 16:06 傻 瓜 閱讀(2609) 評論(0)  編輯  收藏 所屬分類: Ajax

    導航

    統計

    常用鏈接

    留言簿(7)

    我參與的團隊

    隨筆分類

    隨筆檔案

    文章分類

    友情鏈接

    搜索

    積分與排名

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 西西大胆无码视频免费| 亚洲精品无码激情AV| 国产精品久久久久久亚洲小说| 男人的天堂亚洲一区二区三区| 亚洲JIZZJIZZ妇女| 在线精品亚洲一区二区小说| 无码乱肉视频免费大全合集| 黄色a三级三级三级免费看| 亚洲av鲁丝一区二区三区| 麻豆精品国产免费观看| 人妻在线日韩免费视频| 亚洲熟妇av午夜无码不卡| 日韩一卡2卡3卡4卡新区亚洲| 国产一卡二卡3卡四卡免费| 日亚毛片免费乱码不卡一区 | 亚洲av无码成人精品区在线播放 | 亚洲视频在线免费| 久久久久久亚洲精品影院| 亚洲熟妇av一区二区三区漫画| 在人线av无码免费高潮喷水| 成人午夜免费视频| 亚洲一区二区久久| 亚洲精品高清国产一久久| 亚洲国产精品一区二区第一页免| 在人线av无码免费高潮喷水| 国产成人免费AV在线播放 | 中文字幕久精品免费视频| 亚洲hairy多毛pics大全| 亚洲黄色三级视频| 自拍偷自拍亚洲精品情侣| 日本19禁啪啪无遮挡免费动图| 2022久久国产精品免费热麻豆| 一级做a爱片特黄在线观看免费看| 亚洲人成网站在线播放2019| 久久久久亚洲AV无码专区体验| 亚洲尤码不卡AV麻豆| 啊v在线免费观看| 成人免费毛片观看| 久草视频免费在线| 18观看免费永久视频| 嫩草成人永久免费观看|