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

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

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

    The important thing in life is to have a great aim , and the determination

    常用鏈接

    統(tǒng)計

    IT技術鏈接

    保險相關

    友情鏈接

    基金知識

    生活相關

    最新評論

    利用AJAX+J2EE開發(fā)組織機構(gòu)管理系統(tǒng)(轉(zhuǎn)載)五

    五、 數(shù)據(jù)接口的實現(xiàn)(見Org.jpg文件)

      Org.JSP文件用來在服務器上運行Java的類與前臺web頁之間架起一座橋。取到中間件的接口作用。

      這里分析部分代碼:

    <%@ page contentType="text/html; charset=GBK" %>
    <%@ page import="java.sql.*" %>
    <%@ page import="javax.naming.*" %>
    <%@ page import="javax.sql.*" %>
    <%@ page import="tool.*" %>
    <%@ page import="orgNew.*" %>
    <%@ page import="org.w3c.dom.*" %>
    //上面主要是引用一些java類
    <%
    try{
     //request.setCharacterEncoding("GBK");
     Document doc = XmlTool.createDocumentFromRequest(request);
     //建立web面文檔請求的文檔對象
     Connection conn = ConnTool.getConnectionFromPool();
     //獲取請求的方法名
     String mode=request.getParameter("mode");
     //out.println("ccc");
     //如果方法中沒有其它參數(shù)則讀取組織樹數(shù)據(jù)
     if(mode == null){
      /* int OrgId = Integer.parseInt(request.getParameter("id"));
      String str = orgManager.getChildOrg(OrgId, conn);
      out.println(str);
      */
     String str = orgManager.getTree(conn);
     //out.println(str);
     out.println(str);
    }else if(mode.equals("createOrg")){
     //如果是createOrg方法則建立一個組織
     int parentOrgId = Integer.parseInt(request.getParameter("parentOrgId"));
     //取出傳遞來的第一個參數(shù)parentOrgId
     int OrgId = orgManager.createOrg(parentOrgId, conn);
     //調(diào)用orgManager 類的createOrg方法來建立一個組織
     out.println(OrgId);
     //返回結(jié)果
    }
    conn.close();
    }
    catch(Exception e){
     e.printStackTrace();
    }
    %>

      六、 后臺數(shù)據(jù)的實現(xiàn)

      1. 數(shù)據(jù)結(jié)構(gòu)的定義

      這里,我們主要有三個表。一個是組織結(jié)構(gòu)表,一個是人員表person,一個組織人員關聯(lián)表orgPerson。組織結(jié)構(gòu)表有OrgCode(組織代碼)、OrgName(組織名稱)、orgId(組織Id), parentOrgId(父Id)。人員表有personCode(人員代碼)、personName(人員名稱), sex(性別)、personId(人員Id)。orgPerson表有orgId, personId。

      2. 數(shù)據(jù)庫的連接

      WEB應用程序常用MySQL作后臺數(shù)據(jù)庫,這是因為MySQL簡單、高效。這里我們也用MySQL作為數(shù)據(jù)庫。Java中用jdbc連接數(shù)據(jù)庫。下面是連接數(shù)據(jù)庫的CODE:

    public static Connection getConnectionFromPool() throws Exception {
     Context ctx = new InitialContext();
     DataSource ds = (DataSource) ctx.lookup("java:/erpds");
     return ds.getConnection();
    }

    /**
    * 取數(shù)據(jù)庫鏈接對象
    * @return Connection 數(shù)據(jù)庫鏈接對象
    * @throws Exception
    */
    /*
    public static Connection getDirectConnection() throws Exception {
     Class.forName("com.sybase.jdbc2.jdbc.SybDriver");
     String url = "jdbc:sybase:Tds:19.64.13.16:4100/wydb?charset=iso_1";
     String user = "sa";
     String password = "2860008";
     Connection conn = DriverManager.getConnection(url, user, password);
     return conn;
    }
    */

      3. 業(yè)務邏輯層的實現(xiàn)

      后臺開發(fā)我們用Java類來實現(xiàn)。這里我們開發(fā)了一個orgNew包,類名為orgManager。此類封裝了與數(shù)據(jù)庫操作有關的方法。通過main可調(diào)試程序的正確性。

      這里給出了新增加一個組織的全部代碼和通過XML取得樹結(jié)構(gòu)信息的代碼,樹結(jié)構(gòu)通過遞歸實現(xiàn)。

    package orgNew;// Java類所打的包
    import tool.*;
    import java.sql.*;
    import java.util.*; // 引用Java類的
    public class orgManager {
     public orgManager() { }
     public static void main(String[] args) throws Exception {
      Connection conn = tool.ConnTool.getDirectConnection();// 引用數(shù)據(jù)訪問類
      conn.setAutoCommit(false);

      orgManager orgManager1 = new orgManager();
      orgManager1.createOrg(0, conn); //測試建立組織是否正確
     }
     //建立一個組織
     public static int createOrg(int parentOrgId, Connection conn) throws
     Exception {
      String sql = "insert into Org (OrgName, parentOrgId) values('新組織', ?)";
      PreparedStatement pstat = conn.prepareStatement(sql);
      pstat.setInt(1, parentOrgId);
      pstat.executeUpdate();
      pstat.close();

      Statement stat = conn.createStatement();
      String sql2 = "select max(OrgId) from Org";
      ResultSet rs = stat.executeQuery(sql2);
      rs.next();
      int OrgId = rs.getInt(1);
      rs.close();
      stat.close();
      System.out.println(OrgId);
      return OrgId;
     }
    }
    //通過遞歸得到組織信息的XML格式的數(shù)據(jù)
    public static String getTree(Connection conn) throws
    Exception {
     StringBuffer ret = new StringBuffer();//定義可緩沖的字符流
     ret.append("<?xml version='1.0' encoding='gb2312'?><tree id='0'>");//定義XML格式的頭信息
     ret.append(" <item child='1' text='組織' id='1' >");//插入結(jié)點體。注樹結(jié)點以item為標記
     ret.append(getChildTree(1, conn));
     ret.append("</item>");//結(jié)點體結(jié)束標記
     ret.append("</tree>");//樹結(jié)束標記
     return ret.toString();//返回字符流
    }

    public static String getChildTree(int OrgId, Connection conn) throws
    Exception {
     StringBuffer ret = new StringBuffer();
     String sql = "select a.OrgId, a.OrgName, a.OrgCode,count(b.parentOrgId) from Org a " +
      "left join Org b on a.OrgId = b.parentOrgId " +
      "where a.parentOrgId = ? " +
      "group by a.OrgId, a.OrgName";
     PreparedStatement pstat = conn.prepareStatement(sql);
     pstat.setInt(1, OrgId);
     ResultSet rs = pstat.executeQuery();
     while (rs.next()) {
      int childOrgId = rs.getInt(1);
      String childOrgName = rs.getString(2);
      String childOrgCode = rs.getString(3);
      if (childOrgCode == null) {
       childOrgCode = " ";
      }
      if (childOrgName == null) {
       childOrgName = "新組織";
      }
      int childCount = rs.getInt(3);
      if (childCount > 0) {
       childCount = 1;
      }
      ret.append("<item child='" + childCount + "' text='" + childOrgName +
    "' id='" +childOrgId + "' code='"+childOrgCode+"'>");
      ret.append(getChildTree(childOrgId, conn));
      ret.append("</item>");
     }
     rs.close();
     pstat.close();
     return ret.toString();
    }

      其它代碼見orgManager.java文件。

      七、 總結(jié)

      本文件通過一個實例全面介紹了Ajax開發(fā)的各個細節(jié)。通過與J2ee的結(jié)合來實現(xiàn)三層分布式開發(fā)的層次劃分,后臺與前端的調(diào)用。數(shù)據(jù)的讀取、訪問及展現(xiàn)。

      通過這個實例,我們可見,Ajax使WEB中的界面與應用分離。數(shù)據(jù)與呈現(xiàn)分離的分離,有利于分工合作、減少非技術人員對頁面的修改造成的WEB應用程序錯誤、提高效率、也更加適用于現(xiàn)在的發(fā)布系統(tǒng)。也可以把以前的一些服務器負擔的工作轉(zhuǎn)嫁到客戶端,利于客戶端閑置的處理能力來處理。

      Ajax是傳統(tǒng)WEB應用程序的一個轉(zhuǎn)變。以前是服務器每次生成HTML頁面并返回給客戶端(瀏覽器)。Ajax理念的出現(xiàn),揭開了無刷新更新頁面時代的序幕,并有代替?zhèn)鹘y(tǒng)web開發(fā)中采用form(表單)遞交方式更新web頁面的趨勢,可以算是一個里程碑。

    posted on 2006-12-05 21:38 鴻雁 閱讀(183) 評論(0)  編輯  收藏

    主站蜘蛛池模板: 最近2019中文字幕免费大全5| 国产精品久久久久久亚洲小说 | 永久亚洲成a人片777777| 美国毛片亚洲社区在线观看| 免费特级黄毛片在线成人观看| 亚洲夂夂婷婷色拍WW47| 免费看国产成年无码AV片 | 男男黄GAY片免费网站WWW| 麻豆国产人免费人成免费视频| 亚洲看片无码在线视频| 成人性生交大片免费看无遮挡 | 亚洲桃色AV无码| a级毛片在线免费| 在线观看亚洲一区二区| 成年人网站免费视频| 亚洲日韩精品无码专区加勒比☆| 最近中文字幕mv免费高清视频7| 亚洲乱码av中文一区二区| 日韩精品免费一区二区三区| 国产精品亚洲AV三区| 久久精品国产亚洲5555| 亚洲国产视频久久| 日本一区二区免费看| 最近免费最新高清中文字幕韩国 | 亚洲精品国精品久久99热一| 暖暖免费在线中文日本| 中文字幕亚洲精品资源网| 成人A级毛片免费观看AV网站| AV激情亚洲男人的天堂国语| 久久精品国产精品亚洲艾草网美妙 | 中文字幕中韩乱码亚洲大片| 香蕉免费一区二区三区| 精品久久亚洲中文无码| 亚洲国产香蕉人人爽成AV片久久 | 一级特黄录像免费播放中文版| 97在线免费视频| 亚洲一区免费视频| 国产日产亚洲系列最新| 最近中文字幕电影大全免费版 | 亚洲日本一线产区和二线 | 久久精品国产亚洲77777|