• (四)XML基础(客户端和服务端发送与接收xml数据)


    案例:

    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=" 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();
    
        }
    
    }

    结果:



     本章所有代码都在:  链接

  • 相关阅读:
    navicat12破解版
    mysql-5.6.40-winx64的安装,只需解压,个人感觉最容易的方法windows系统
    JavaIO流学习总结-FileReader和FileWriter基本操作练习
    JavaIO流学习总结-CharArrayReader和CharArrayWriter基本操作练习
    JavaIO流学习总结-PipedReader和PipedWriter基本操作练习
    JavaIO流学习总结-BufferedWriter和BufferedReader基本操作练习
    JavaIO流学习总结-StringReader和StringWriter基本操作练习
    JavaIO流学习总结-InputStreamReader和OutputStreamWriter基本操作练习
    JavaIO流学习总结-FilterReader和FilterWriter分析
    JavaIO流学习总结-字节流总结
  • 原文地址:https://www.cnblogs.com/shyroke/p/6820521.html
Copyright © 2020-2023  润新知