⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 amazon.jsp

📁 简单实用的ajax实例,包含动态数据加载、电子商务应用、自动及定时业务等小型实例
💻 JSP
字号:
<%@ page contentType="text/xml; charset=UTF-8"%>
<%@ page language="java"%>
<%@ page import="java.util.*,java.io.*,org.dom4j.*,org.dom4j.io.*"%>
<%@ page import="java.sql.*,ajax.db.DBUtils,ajax.util.XMLUtils"%>
<%
    out.clear();                                    //清空当前的输出内容(空格和换行符)

    String browseNodeId = request.getParameter("browseNodeId");//获取要浏览的browseNodeId参数

    //创建用于保存xmlTree信息的StringBuffer对象
    StringBuffer xmlTree= new StringBuffer("<?xml version=\"1.0\" encoding=\"UTF-8\"?>");
    xmlTree.append("<tree>");                           //xmlTree根节点为<tree>

    //如果获取的是第一层目录,从数据库中读取并生成
    if ("0".equals(browseNodeId)) {
        String sql = "select * from amazon_categories order by seq asc";//定义查询数据库的SQL语句

        Connection conn = null;                 //声明Connection对象
        PreparedStatement pstmt = null;         //声明PreparedStatement对象
        ResultSet rs = null;                    //声明ResultSet对象
        try {
            conn = DBUtils.getConnection();     //获取数据库连接
            pstmt = conn.prepareStatement(sql); //根据sql创建PreparedStatement
            rs = pstmt.executeQuery();          //执行查询,返回结果集
            while (rs.next()) {                 //遍历结果集创建item节点
                xmlTree.append("<item id=\"");
                xmlTree.append(rs.getString("id"));
                xmlTree.append("\" isFolder=\"");
                xmlTree.append(true);
                xmlTree.append("\">");
                xmlTree.append(XMLUtils.escapeXML(rs.getString("name")));
                xmlTree.append("</item>");
            }
        } catch (SQLException e) {
            System.out.println(e.toString());
        } finally {
            DBUtils.close(rs);         //关闭结果集
            DBUtils.close(pstmt);      //关闭PreparedStatement
            DBUtils.close(conn);       //关闭连接
        }
    //否则使用DOM4j从远程读取信息
    } else {
        String myAccessKeyId = "0WTFYB410YD3GXRYR602";  //从Amazon申请的访问keyId
        //访问的目标URL
        String url = "http://webservices.amazon.com/onca/xml?Service=AWSECommerceService&AWSAccessKeyId=" + myAccessKeyId + "&Operation=BrowseNodeLookup&BrowseNodeId=" + browseNodeId;

        SAXReader reader = new SAXReader();     //创建一个SAXReader对象
        Document doc = reader.read(url);        //从远程读取并解析XML

        //设置访问BrowseNodeId属性的XPath
        XPath xpath1 = doc.createXPath("//am:Children/am:BrowseNode/am:BrowseNodeId");
        xpath1.setNamespaceURIs(Collections.singletonMap("am", "http://webservices.amazon.com/AWSECommerceService/2005-10-05"));

        //设置访问Name属性的XPath
        XPath xpath2 = doc.createXPath("//am:Children/am:BrowseNode/am:Name");
        xpath2.setNamespaceURIs(Collections.singletonMap("am", "http://webservices.amazon.com/AWSECommerceService/2005-10-05"));

        List idNodes = xpath1.selectNodes(doc);     //使用XPath获取BrowseNodeId节点列表
        List nameNodes = xpath2.selectNodes(doc);   //使用XPath获取Name节点列表

        int nodeSize = idNodes.size();              //获取列表长度

        //如果列表长度为0,表示当前请求的节点为叶子节点
        if (nodeSize == 0) {
            //设置读取叶子节点编号的XPath
            xpath1 = doc.createXPath("//am:BrowseNodes/am:BrowseNode/am:BrowseNodeId");
            xpath1.setNamespaceURIs(Collections.singletonMap("am", "http://webservices.amazon.com/AWSECommerceService/2005-10-05"));
            //设置读取叶子节点名称的XPath
            xpath2 = doc.createXPath("//am:BrowseNodes/am:BrowseNode/am:Name");
            xpath2.setNamespaceURIs(Collections.singletonMap("am", "http://webservices.amazon.com/AWSECommerceService/2005-10-05"));
            //将叶子节点写入xmlTree
            xmlTree.append("<item id=\"");
            xmlTree.append(xpath1.selectSingleNode(doc).getText());
            xmlTree.append("\" isFolder=\"");
            xmlTree.append("false");                //注意设置isFolder为false
            xmlTree.append("\">");
            xmlTree.append(XMLUtils.escapeXML(xpath2.selectSingleNode(doc).getText()));
            xmlTree.append("</item>");
        //否则请求节点为目录节点,需要遍历读取其信息
        } else {
            //遍历节点列表,读取节点信息,写入xmlTree
            for (int i=0; i<nodeSize; i++) {
                Node idNode = (Node) idNodes.get(i);
                Node nameNode = (Node) nameNodes.get(i);
                xmlTree.append("<item id=\"");
                xmlTree.append(idNode.getText());
                xmlTree.append("\" isFolder=\"");
                xmlTree.append("true");
                xmlTree.append("\">");
                xmlTree.append(XMLUtils.escapeXML(nameNode.getText()));
                xmlTree.append("</item>");
            }
        }
    }

    xmlTree.append("</tree>");     //xmlTree根节点的结束标签
    out.print(xmlTree.toString()); //输出xmlTree
%>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -