999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于Struts的物資綜合管理系統的設計與實現

2008-12-31 00:00:00郝晨健
中國管理信息化 2008年18期

[摘 要] 充分保證信息系統良好的可擴展性,是企業級管理軟件開發的重要原則。在對MVC模式的實現框架Struts本質進行分析的基礎上,采用UML系統分析和建模方法,設計并實現了一個企業級的物資綜合管理系統,并提出了使用Struts應遵循的基本原則。該物資綜合管理系統不僅具有傳統的庫存管理功能,而且滿足了企業辦公業務自動化的需要。Struts技術框架的引入,提高了軟件開發效率,使系統結構清晰,具有更好的業務可擴展性和可維護性。

[關鍵詞] 物資綜合管理;Struts;UML;可擴展性

[中圖分類號]F270.7;TP311[文獻標識碼]A[文章編號]1673-0194(2008)18-0074-04

隨著基于Web的Internet應用進一步普及,在企業信息化建設和深化過程中,基于B/S的計算機信息管理模式已成為主流。某企業傳統的基于C/S的物資管理系統由于該企業信息化二期網絡工程的完成、企業物資部門業務的擴展以及對辦公自動化的要求,已不能滿足企業的應用需求。本系統設計以J2EE技術體系為基礎,采用Struts框架,將用戶界面、業務過程和商業邏輯相分離,提高了系統的可擴展性和組件復用的可能性,使企業能更加方便快捷地根據業務需要維護系統[1]。

1 Struts框架工作機制本質分析

Struts框架通過利用JSP、JavaServlet、JavaBean和StrutsTaglib等技術,在JSP Model 2的基礎上實現MVC模式,工作機制如圖1所示。

客戶(client)完成一個請求響應活動包括以下基本步驟:

(1)客戶通過Web瀏覽器或應用程序客戶端發出請求;

(2)Web服務器將根據配置描述文件web.xml將請求發送給中央控制器ActionServlet,ActionServlet調用RequestProcessor實例,實例根據配置描述文件struts-config.xml提供的URI信息,將請求轉發給業務代理Action,不同的Action對象執行相應的應用邏輯;如果Action對象不存在,ActionServlet會自動創建這個Action對象[2];

(3)Action充當用戶請求和商業邏輯處理之間的適配器,調用模型組件JavaBean或EJB,完成商業邏輯;

(4)當Action處理完成應用邏輯后,返回一個ActionForward對象,并將控制權返回給ActionServlet,ActionServlet通過返回值將處理結果轉發給指定的Web組件。

(5)ActionForward對象屬性值指向的JSP 組件利用Taglibs生成動態視圖,返回給客戶,完成動態響應。

從以上的基本分析可以看出,中央控制器Action Servlet主要對請求轉發事件和系統內部的請求重定向事件進行監聽,基于事件所產生的業務活動,通過業務代理Action對象的方法實現,ActionForward對象封裝了轉發相應URI和重定向相應URI,這是Struts框架工作機制的本質。ActionForm主要用于對來自于StrutsTaglib的表單數據的傳遞和驗證,是Struts框架的定制類。在開發過程中,也可以選擇使用標準標簽庫(JSTL)和自定義標簽。

2 物資綜合管理系統的設計

2. 1系統的總體業務模塊設計

物資綜合管理系統分為6個業務模塊[3],每個模塊都有相應的功能,三級結構如圖2所示。

模塊設計按照實際業務流程的要求進行。首先根據計劃管理選擇供應商,簽訂合同,并進行采購過程的監控;到貨后首先進行驗收,合格貨品進入庫存管理。對于新貨品的編號,在計劃管理模塊中由計劃員申請編碼。

計劃管理模塊子系統是系統的核心模塊之一。計劃員根據各單位的需求情況,制訂年、月和臨時計劃,并報批計劃,計劃管理子系統結構模塊結構如圖3所示。

這里以主管經理處理計劃模塊為例,建立UML用例[4],如圖4所示。

活動者:主管經理

(1)前置條件:計劃員已上報計劃。

(2)主事件流:經理在待批復計劃中選定某一計劃,并可查看該計劃詳細信息;選擇批復,在頁面備選項寫入批復信息,提交,激活計劃員執行狀態,通知進行采購。

(3)備選事件流:選擇不批準,通知計劃員修改或重做計劃。報上級主管經理待批復,對已批復的計劃未執行的可召回,重新批復。

(4)后置條件:計劃被批準,轉為采購執行。

2. 2根據MVC設計模式對系統進行詳細設計

這里以計劃員上報臨時計劃和主管領導處理計劃的過程來說明:

(1)數據表設計。上報的臨時計劃由主管經理批準,因此建立臨時計劃數據表t_plan_base,其中用state字段表示計劃項的狀態(0:未上報;1:已上報;2:已批準;3:未批準)。

(2)商業邏輯model設計。在實際開發過程中,各模塊在數據庫處理方面建立了統一的外部接口,在計劃管理模塊建立PlanManager接口,其中 boolean add(Bean f )為添加接口,其中f為對應的數據表的bean;int modifyData(Bean f ,int state)為修改接口,state為被修改對象的狀態;boolean delete(String id)為刪除接口,id為被刪除對象的標識;List select(Bean f )和List select()為兩種查詢接口,分別用于條件查詢和無條件查詢。

計劃員維護制訂計劃,建立DrawPlanManager,其中方法boolean add(PlanBean planlist)完成添加計劃,參數planlist為表t_plan_base對應的bean;主管經理處理計劃,建立DealwithPlanManager,其中方法int modifyData (PlanBean planlist,int state)完成計劃的審批。

int modifyData (PlanBean planlist,int state)的主要代碼如下:

int iState= 0;

String strSQL = \"update t_plan_base set state = ? where plan_id = ? \";

…//數據庫連接,獲得對象conn

try {

Prepared Statement stmt = conn.prepare Statement(strSQL);

stmt. setString(1,state);// 獲得state狀態值,并存入數據庫

stmt. setString(2,planlist.getPlanID());//獲得planID值

iState = stmt. executeUpdate();

LoggerFile. logFile(strSQL,\"\");

} catch (SQLException e){

try {

conn. rollback();

} catch (SQLException e1){

e1.printStackTrace();

} finally {…}

}

return iState;//0:改變不成功,1:改變成功

(3)視圖設計。計劃數據錄入由t_plans.jsp的表單完成,對應的Temp Plan Form繼承org. apache. struts. action. ActionForm。

(4)控制器代理Action設計[5]。建立org. apache. struts.action. Action子類TempPlanSubAction和DealWithPlanAction。當計劃錄入完畢,可以由兩種選擇,①放入計劃草稿箱,Applied Item Action調用Draw Plan Manager的boolean add(PlanForm planlist)方法,并傳遞參數state=0;②上報計劃,此時state=1。

當主管經理進入待批復計劃工作室,可以查看待批復計劃詳單,Deal with Plan Action可以調用DealwithPlanManager的int modifyData (PlanBean planlist,int state)方法完成待批復計劃的批準(state=2)和不批準操作或報上一級(state=3)。

TempPlanSubAction.java的主要代碼如下:

ActionErrors errors = new ActionErrors();

ActionForward forward = new ActionForward();

TempPlanForm tempPlanForm = (TempPlanForm) form;

PlanBean planlist=new PlanBean();

if (request. getParameter(\"draft\")!=1){//draft=\"存入草稿箱\"

planlist. setState(\"0\");

}

else {

planlist. setState(\"1\");

}

planlist. setPlanerID ( tempPlanForm. getPlanerID( ) );//設置計劃員I D

planlist. setPlaner(tempPlanForm. getPlaner());//設置計劃員名稱

…,…//設置計劃項的其他屬性

DrawPlanManager drawPlanManager = new DrawPlanManager ()

if(drawPlanManager. add(planlist)){//保存計劃

forward=mapping.f indForward(\"jhymain\");

}else{

errors. add(\"tempplan\",new ActionError(\"tempplan. submmit.wrong\"));

saveErrors(request,errors);

firward=mapping. findForward(\"t_plans\");

}

return (forward);

在struts - config.xml配置描述文件中映射關系如下:

<global-forwards>

<forward name=\" jhymain \" path=\"/jhymain.jsp\" redirect=\"true\" />

<forward name=\" t_plans \" path=\"/t_plans.jsp\" redirect=\"true\" />

</global-forwards>

<form-bean name=\"tempPlanForm\" type=\"wz. forms.plan. TempPlanForm\" />

<action path=\"/tempPlan\" name=\"tempPlanForm\" validate=\"true\" input=\"/tp_design. jsp\" scope=\"session\" type=\"wz. actions. plan.TempPlanSubAction\">

</action>

2. 3系統中基礎信息管理的應用

在各模塊中,不同角色需要同時調用大量的基礎信息,為此建立了部門信息DepartInfo、角色信息RolerInfo、物品基本信息GoodsType和庫房信息WareType等數據表和BasicInfManager類,在ServletContext范圍內共享數據,例如計劃員登錄后BasicInfAction.java 的主要代碼如下:

ArrayList departInfoList,goodsTypeList,wareTypeList;

ServletContext app=getServlet(). getServletConfig().getServletContext();

departInfoList =(ArrayList)app. getAttribute(\"departInfo\");

goodsTypeList =(ArrayList)app. getAttribute(\"goodsType\");

wareTypeList =(ArrayList)app. getAttribute(\"wareType\");

if(( departInfoList ==1)||( goodsTypeList ==1) ||( wareTypeList ==1)){

BasicInfManager basicInfManager=new BasicInfManager();

departInfoList= basicInfManager.initDepartInfo(); //獲得部門信息

goodsTypeList = basicInfManager.initGoodsType ();//物品基本信息

wareTypeList = basicInfManager.init WareType ();

app. setAttribute(\"departInfo\",departInfoList);

app. setAttribute(\"goodsType\",goodsTypeList);

app. setAttribute(\"wareType\",wareTypeList);

}

else{…}

3 基于Struts開發應遵循的基本原則

基于上述Struts的本質分析及開發實踐,提出以下設計時應遵循的基本原則:

(1)JSP頁面避免直接轉發,任何事件都應受到Action Servlet的監聽,對于無具體業務活動的事件,可使用專門用于請求轉發的org. apache. struts.action. ForwardAction類。

(2)ActionForm應主要用于表單數據的傳遞,開發者應在模型層建立具有getter、setter訪問器的Bean,在控制層完成數據交換,并通過Web的共享數據機制完成數據傳遞。

(3)在數據共享過程中,應減少利用session進行數據傳遞,request范圍內的共享數據有利于提高應用系統的性能,減少系統資源開銷。

只有遵循上述基本原則,才能真正體現Struts的開發理念,雖然在開發過程中會增加部分代碼的編寫量,但有利于系統今后的技術擴展和業務功能擴展,并能充分發揮struts-config. xml配置描述文件的作用,提高應用系統的可維護性。

4 結 論

本文描述了一個完全基于Struts框架的綜合物資管理系統的設計,以及開發過程中應遵循的基本原則,體現Struts的開發理念;系統在WebSphere Application Server 5.1下運行良好,并具有較好的業務可擴展性。另外,由于未使用對象持久化技術,在開發過程中對數據庫操作的效率不高,這將在今后進一步加以完善。

主要參考文獻

[1] 黃丹霞,楊璐. 在J2EE項目中使用Struts對MVC模式的研究與實現[J]. 計算機工程與設計,2005(9):122-125.

[2] 孫衛琴. 精通Struts:基于MVC的Java Web的設計與開發[M]. 北京:電子工業出版社,2004.

[3] 蘇曉玲. 淺談企業物資管理信息系統建設[J]. 中國電力教育,2006(6):75-77.

[4] 蔣慧,吳禮發,陳衛衛. UML設計核心技術[M]. 北京:北京希望電子出版社,2001.

[5] SUN Microsystems Inc. Java TM 2 Platform Enterprise Edition Specification [EB/OL]. http://java. sun. com/j2ee, 2002.

主站蜘蛛池模板: 99久久精彩视频| 欧美精品啪啪一区二区三区| 国产超碰在线观看| 亚洲swag精品自拍一区| 色悠久久综合| 精品91视频| 午夜无码一区二区三区| 凹凸精品免费精品视频| 情侣午夜国产在线一区无码| 最新亚洲人成无码网站欣赏网| 免费在线色| 国产极品美女在线| 久久国产精品嫖妓| 日本一区二区三区精品国产| 最新亚洲人成网站在线观看| 国产靠逼视频| 免费xxxxx在线观看网站| 国产一线在线| 国产微拍精品| 国产视频欧美| 九九视频在线免费观看| 乱人伦99久久| 日本免费a视频| 欧美在线综合视频| 丁香婷婷激情综合激情| 一区二区欧美日韩高清免费| 国产真实乱了在线播放| 午夜精品福利影院| 午夜激情福利视频| 视频一本大道香蕉久在线播放 | 国产幂在线无码精品| 日韩精品欧美国产在线| 亚洲天堂网在线视频| 亚洲无线观看| 波多野结衣无码AV在线| 国产日韩欧美精品区性色| 亚洲三级影院| 国产女人18水真多毛片18精品 | 亚洲欧美激情另类| 国产一级裸网站| 久久6免费视频| 国产后式a一视频| 久无码久无码av无码| 国产精品妖精视频| 91区国产福利在线观看午夜| 国内老司机精品视频在线播出| 国产成人久久777777| 色悠久久综合| 58av国产精品| 亚洲天堂精品视频| 再看日本中文字幕在线观看| 国产v精品成人免费视频71pao| 久久性妇女精品免费| 精品国产香蕉伊思人在线| 精品国产自在在线在线观看| 国产乱子伦无码精品小说| 无码久看视频| 九色视频在线免费观看| 欧美笫一页| 欧美国产综合色视频| 国产理论一区| 成人午夜亚洲影视在线观看| 亚洲精品第1页| 成人国产精品2021| av天堂最新版在线| 国产精品微拍| 亚洲天堂777| 四虎影视无码永久免费观看| 亚洲欧美日韩另类| 国产精品部在线观看| 国产亚洲成AⅤ人片在线观看| 欧美高清视频一区二区三区| 久久精品国产国语对白| 欧美精品影院| 99热这里只有精品2| a亚洲视频| 亚洲中文在线视频| 亚洲人成网7777777国产| 国产青榴视频| 一本色道久久88综合日韩精品| 国产啪在线| 亚洲一区无码在线|