利用AJAX+J2EE開發組織機構管理系統 5

來源:互聯網
上載者:User
  六、 後台資料的實現

  1. 資料結構的定義

  這裡,我們主要有三個表。一個是組織圖表,一個是人員表person,一個組織人員關聯表orgPerson。組織圖表有OrgCode(組織代碼)、OrgName(組織名稱)、orgId(組織Id), parentOrgId(父Id)。人員表有personCode(人員代碼)、personName(人員名稱), sex(性別)、personId(人員Id)。orgPerson表有orgId, personId。

  2. 資料庫的串連

  WEB應用程式常用MySQL作後台資料庫,這是因為MySQL簡單、高效。這裡我們也用MySQL作為資料庫。Java中用jdbc串連資料庫。下面是串連資料庫的CODE:

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

/**
* 取資料庫連結化物件
* @return Connection 資料庫連結化物件
* @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. 商務邏輯層的實現

  後台開發我們用Java類來實現。這裡我們開發了一個orgNew包,類名為orgManager。此類封裝了與資料庫操作有關的方法。通過main可偵錯工具的正確性。

  這裡給出了新增加一個組織的全部代碼和通過XML取得樹結構資訊的代碼,樹結構通過遞迴實現。

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();// 引用資料訪問類
  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格式的資料
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' >");//插入結點體。注樹結點以item為標記
 ret.append(getChildTree(1, conn));
 ret.append("</item>");//結點體結束標記
 ret.append("</tree>");//樹結束標記
 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檔案。

  七、 總結

  本檔案通過一個執行個體全面介紹了Ajax開發的各個細節。通過與J2ee的結合來實現三層分布式開發的層次劃分,後台與前端的調用。資料的讀取、訪問及展現。

  通過這個執行個體,我們可見,Ajax使WEB中的介面與應用分離。資料與呈現分離的分離,有利於分工合作、減少非技術人員對頁面的修改造成的WEB應用程式錯誤、提高效率、也更加適用於現在的發布系統。也可以把以前的一些伺服器負擔的工作轉嫁到用戶端,利於用戶端閑置的處理能力來處理。

  Ajax是傳統WEB應用程式的一個轉變。以前是伺服器每次產生HTML頁面並返回給用戶端(瀏覽器)。Ajax理念的出現,揭開了無重新整理更新頁面時代的序幕,並有代替傳統web開發中採用form(表單)遞交方式更新web頁面的趨勢,可以算是一個裡程碑。

  總之,Ajax適用於互動較多,頻繁讀資料,資料分類良好的WEB應用。

共7頁。 9 7 1 2 3 4 5 6 7
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.