用JSP-Servlet構建三層式管理信息系統

 

JSP/Servlet構建三層式管理信息系統

 

摘要:本文介紹了一種開發基於Web的管理信息系統的實現框架。利用JSP/Servlet技術,結合MVC設計模式,使得開發過程更加靈活,更加易於維護。

關鍵詞:管理信息系統,JSPServletMVC設計模式,JDBC

1、     引言

管理信息系統(MIS)是一個由人、計算機等組成的能進行信息的收集、傳遞、存儲、加工和使用的系統。隨着科技的發展,信息的膨脹,企業信息化成了企業在競爭中處於不敗地位的有效手段之一。而MIS不僅能夠及時全面地提供信息和數據,簡化統計工作,對不同的管理層次提出不同的報告之外,還能根據過去的數據預測未來的情況。因此,採用何種方法開發出一種兼顧開發效率和運行效率,同時滿足分佈式事件處理功能的管理信息系統就顯得尤爲重要。本文闡述了一種利用JSP/Servlet構建三層式管理信息系統的方法。

2、   系統的三層體系結構

系統的三層體系結構如圖1

客戶機      

 

 

 

瀏覽器

http服務器

應用程序服務器

Servlet容器

數據庫

JDBC

 

servlet

jsp

                       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

Controller (Servlet)

View

(JSP)

 

Model

 

 

(JavaBeans)

DataBase

 


   HTTP請求             獲取數據

 

 

轉交 請求

 

    文檔輸出             更新模型

 

 

2 MVC設計模式的數據傳遞圖

4、   數據存取技術

數據庫是管理信息系統的核心內容。目前,Web與數據庫接口技術有很多,其中JDBCJava程序連接和存取數據庫的應用程序接口,由一組用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的方式來實現郵購業務的客戶管理、職員管理、訂單管理、商品管理、出庫管理、入庫管理等業務處理、流程控制、權限控制、查詢統計以及打印等功能。其中詳細分析訂單管理部分的查詢功能。

51數據庫設計

對於訂單部分,需要定義訂單信息表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();

    }

}

52中間層設計

在商品郵購管理信息系統的開發過程中,基於MVC設計模式的思想,結合系統的實際情況,我們將Model層按照分工進行了進一步劃分。Model層一般來說由許多JavaBeans組成,根據這些Beans在系統中起的不同的作用,將它們分爲Command BeansData BeansView 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";

}

}

53客戶端設計

視圖是向用戶顯示信息的應用程序的一部分,也就是用戶發出請求之後返回給用戶的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 >動作用idscope發現存在的各個對象,再通過<%=view.getDdbh() <%=temp.getDdbh()%>來獲取相關數據。

6、   小結

本文提出了一個開發基於Web的利用JSP/Servlet技術的三層管理信息系統的解決方案。該方案實現了表示層和邏輯層的分離,使得系統具有很好的擴展性,同時,給管理信息系統的開發提供了一個完整的思路和方法。

 

參考文獻

1 黃梯雲.管理信息系統.高等教育出版社,2002

2 宋波 董曉梅.Java應用設計.人民郵電出版社.2002-8

3 Phil Hanna.即時應用Java Servlets.人民郵電出版社,麥格勞-希爾國際公司.2001-4

4 施汝軍.網站JSP後臺解決方案.人民郵電出版社.2001-2

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章