摘要:本文介紹了一種開發基於Web的管理資訊系統的實現架構。利用JSP/Servlet技術,結合MVC設計模式,使得開發過程更加靈活,更加易於維護。
關鍵詞:管理資訊系統,JSP,Servlet,MVC設計模式,JDBC
1、 引言
管理資訊系統(MIS)是一個由人、電腦等組成的能進行資訊的收集、傳遞、儲存、加工和使用的系統。隨著科技的發展,資訊的膨脹,公司資訊化成了企業在競爭中處於不敗地位的有效手段之一。而MIS不僅能夠及時全面地提供資訊和資料,簡化統計工作,對不同的管理層次提出不同的報告之外,還能根據過去的資料預測未來的情況。因此,採用何種方法開發出一種兼顧開發效率和運行效率,同時滿足分布式事件處理功能的管理資訊系統就顯得尤為重要。本文闡述了一種利用JSP/Servlet構建三層式管理資訊系統的方法。
2、 系統的三層體繫結構
系統的三層體繫結構1。
圖1基於Java技術的Web應用體繫結構
整個管理資訊系統採用Browser/Web/DataBase的三層體繫結構。Web伺服器接受請求,通過應用程式伺服器執行一個Java伺服器端小程式Servlet並返回其輸出,從而實現與客戶機進行資訊資源的互動。資料庫伺服器用來儲存管理資訊系統中所用到的各種資料,資料由資料庫管理程式直接錄入。系統的用戶端只需要一個瀏覽器即可。相關人員通過瀏覽器來查詢、增加、修改、刪除資料,對資訊進行管理。
3、 系統的設計模式
設計模式是物件導向的程式設計人員用來解決編程問題的一種形式化表示。目前,在大多數Browser/Server結構的Web應用中,瀏覽器直接通過HTML或者JSP的形式與使用者互動,響應使用者的請求。雖然很直觀,但是大多數管理資訊系統操作的資料量都是驚人的,隨著代碼的增多會使JSP頁面臃腫不堪,Web伺服器的負荷過重。因此,在中介層上採用基於模型視圖控制器(MVC.Model-View-Controller)的設計模式。Model層用來實現商務邏輯,View層用來顯示使用者介面,Controller層主要負責View層和Model層之間的控制關係。具體實現時,把Servlet用作應用程式的控制器,把JSP文檔作為視圖,JavaBeans被用來表示模型。所有的請求都被發送給作為控制器的Servlet,它接受請求,並根據請求資訊將它們分發給適當的JSP來響應。同時,Servlet還根據JSP的需求產生JavaBeans的執行個體並輸出給JSP環境。JSP可以通過直接調用方法或使用UseBean的自訂標籤得到JavaBeans中的資料。這種設計模式很好地實現了資料層與展示層的分離,使開發工作更加容易和迅速。在這種設計模式下,各層次之間的資料傳遞2。
圖2 MVC設計模式的資料傳遞圖
4、 資料存取技術
資料庫是管理資訊系統的核心內容。目前,Web與資料庫介面技術有很多,其中JDBC是Java程式串連和存取資料庫的應用程式介面,由一組用Java語言編寫的類與介面組成,是執行SQL語句的Java API。本文介紹的管理資訊系統中,在資料的存取方面,採用了 JSP/Servlet+JDBC的技術,即用戶端不產生資料庫查詢命令,用戶端上的瀏覽器通過URL和中介層的Web伺服器建立串連。Web伺服器主要負責接收本地或遠程瀏覽器的HTTP資料請求,然後中介層的Servlet收到請求後,通過執行程式中的SQL語句,利用JDBC提供的標準API對資料庫進行訪問和相應的操作處理。Servlet再將查詢的資料傳給JSP,最後產生標準的JSP頁面將結果返回給提出請求的瀏覽器。這樣,不僅將用戶端與資料庫伺服器端分開,同時提高了資料庫的訪問效率。
5、 執行個體
為了更好地說明用JSP/Servlet構建三層式管理資訊系統的方法,作者將舉例分析設計一個商品郵購管理資訊系統。這個商品郵購管理資訊系統利用Java語言進行伺服器端應用程式的開發,使用IBM公司的Webshpere作為應用伺服器,資料庫管理系統選用SQL Server7.0,資料庫介面程式使用JDBC2介面。整個系統使用基於Web的方式來實現郵購業務的客戶管理、職員管理、訂單管理、商品管理、出庫管理、入庫管理等業務處理、流程式控制制、許可權控制、查詢統計以及列印等功能。其中詳細分析訂單管理部分的查詢功能。
5.1資料庫設計
對於訂單部分,需要定義訂單資訊表Db_order,表中的欄位有訂單編號(ddbh),客戶編碼(khbh),商品編號(spbh),商品單價(spdj),定購數量(dgsl),合計總價(hjzj),收到金額(sdje),收到日期(sdrq)。為了能夠在應用中使用Db_order表,必須建立資料庫連接。這個功能由sql_data.java來實現。其部分代碼如下。
public class sql_data {
String url = "jdbc:odbc:PostOrder"; // use your hostname and port number here
String login = "sa"; // use your login here
String password ="zh12345"; // use your password here
public Connection connection = null;
public Statement st = null;
public ResultSet rs = null;
try
{
Class.forName("com.microsoft.jdbc.sqlserver.SqlServerDriver");
conn =DriverManager.getConnection(url, user, password);
} catch (Exception e)
{
e.printStackTrace();
}
}
5.2中介層設計
在商品郵購管理資訊系統的開發過程中,基於MVC設計模式的思想,結合系統的實際情況,我們將Model層按照分工進行了進一步劃分。Model層一般來說由許多JavaBeans組成,根據這些Beans在系統中起的不同的作用,將它們分為Command Beans、Data Beans、View Beans三種類型。其中Command Beans用來實現商務邏輯即對對象執行個體的處理;Data Beans是用來描述和定義從現實世界中抽象出來的物件模型;而 View Beans則是用來將處理完的對象執行個體進一步封裝並返回到用戶端。
首先,Command Beans獲得Servlet傳遞過來的資訊,並將這些商務資訊封裝在Data Beans定義的對象執行個體中,根據商務邏輯對資訊進行處理。當需要進行調用資料庫的存取操作時,Command Beans將對象執行個體以及相應的控制資訊通過資料庫介面方法完成對資料庫的操作。資料庫操作完成後,再將返回的記錄集封裝成Data Beans的對象執行個體,進行一定的處理後,將這些需要返回到介面的資訊再封裝到事先定義的View Beans中去,通過View Beans將資訊返回到介面上。
以下是對訂單進行查詢處理的OrderGl.java的部分代碼。
public class OrderGl {
……
//定義如下的方法完成對訂單的查詢操作
public final String currentMultiQuery(
javax.servlet.http.HttpServletRequest request,
javax.servlet.http.HttpServletResponse response)
throws com.goods.exception.GoodsException
{
//從JSP頁面獲得相應查詢資訊
com.goods.view.OrderView view = getView(request, response);
String ddbh = view.getDdbh(); //訂單編號
//產生SQL語句
String sqlQuery = "select ddbh,khbh,spbh,spdj,dgsl,hjzj,sdje,sdrq from db_order ";
//執行查詢操作
java.util.Vector vector = new java.util.Vector();
com.goods.sjk.sql_data per = new com.goods.sjk.sql_data();
try
{
java.sql.ResultSet rs = per.executeQuery(sqlQuery);
while (rs.next())
{
com.goods.dx.Db_order temp = new com.goods.dx.Db_order();
temp.setDdbh(rs.getString("ddbh"));
temp.setKhbh(rs.getString("khbh"));
temp.setSpbh(rs.getString("spbh"));
temp.setSpdj(rs.getString("spdj"));
temp.setDgsl(rs.getString("dgsl"));
temp.setHjzj(rs.getString("hjzj"));
temp.setSdje(rs.getString("sdje"));
temp.setSdrq(rs.getString("sdrq"));
vector.addElement(temp);
}
rs.close();
per.close();
} catch (Throwable e)
{
e.printStackTrace();
per.close();
cxyw.printErrorToWeb(request, response, e.toString());
return e.toString();
}
//將相關資訊回顯給介面
view.setVct(vector);
request.setAttribute("view", view);
return "1";
}
}
5.3用戶端設計
視圖是向使用者顯示資訊的應用程式的一部分,也就是使用者發出請求之後返回給使用者的Web頁面。當單擊"查詢"按鈕時,將顯示根據訂單編號得到的訂單資訊結果頁面ordercx.jsp。這是用JSP頁面中如下文法完成的:
<jsp:useBean id="view" class="com.goods.view.OrderView" scope="request" />
<jsp:useBean id="temp" class="com.goods.dx.Db_order" scope="page" />
< jsp:useBean >動作用id和scope發現存在的各個對象,再通過<%=view.getDdbh()
和<%=temp.getDdbh()%>來擷取相關資料。
6、 小結
本文提出了一個開發基於Web的利用JSP/Servlet技術的三層管理資訊系統的解決方案。該方案實現了展示層和邏輯層的分離,使得系統具有很好的擴充性,同時,給管理資訊系統的開發提供了一個完整的思路和方法。
轉自:動態網製作指南 www.knowsky.com