posts - 10,comments - 2,trackbacks - 0

          網站:JavaEye 作者:liuwei1981 發表時間: 2007-07-30 17:09 此文章來自于 http://www.JavaEye.com
          聲明:本文系JavaEye網站原創文章,未經JavaEye網站或者作者本人書面許可,任何其他網站嚴禁擅自發表本文,否則必將追究法律責任!
          原文鏈接: http://liuwei1981.javaeye.com/blog/107034

                       今天總結一下這個系統軟件使用的系統架構。


                   這個軟件使用的mvc框架有點類似于struts,我是在2005年開始接觸java的,在維護這個系統軟件之前使用的mvc框架包括struts和webwork兩種,相比較之下,與strtus更為類似,或許也是因為strus中控制類部分也是直接操作request吧。


                  這個mvc框架自身的特點大致有這么幾個:


                  1.這個mvc框架沒有使用配置文件,在webconfig文件中配置有一個總控的servlet,負責接受頁面提交的請求,進行轉發。


                     頁面提交請求方式是直接請求這個總控servlet,在提交請求到這個servlet的同時,提交兩個固定的參數,分別是class和method參數,通知servlet將請求轉到相應的類,并調用參數中的方法。


                   2.總控servlet調用的類為普通的java類,沒有特殊的要求,比如struts中要繼承action父類,方法寫法有嚴格的要求,為靜態方法,不允許有返回參數,接受的參數也固定,如下:


                   public static void expMethod(HttpServletRequest req,

                                                  HttpServletResponse res,

                                                  RequestHash reh) throws     Exception {}


                    因為沒有使用配置文件,方法調用結束后返回到哪個頁面,在該方法中直接賦值該頁面的具體路徑。這樣修改起來有點復雜,需要重新編譯類,并且在調試的時候,如果需要找到該請求調用的頁面的具體路徑,必須找到這個類和方法,不如使用配置文件一目了然。


                  3.獲取頁面上的參數,這個框架提供兩種不同的選擇。


                     框架提供一個Common的對象,該對象封裝了對request的部分操作,提供了一個RequestHash對象,該對象為一個Vector集合,頁面表單提交的數據已經封裝到該集合中,參數獲取方式為,創建一個字符串數組,將需要獲取的參數名稱賦值到該數組中,Common的toData方法返回與字符串數組相對應的參數值,如下


                    Common common = new Common(req,res);//req request對象,res為response對象


                    String[] keys = {"param1","param2"};

                    String[] values = common.toData(reh, keys);


                    此時values數組中,values【0】中的值為param1表單值,相應的為param2的表單值。


                   如果需要獲取一個數組值,request的操作是getParamValues方法,例如表單中的復選框值,RequestHash對象提供了類似于request的這個操作。


                   reh.getParameterValues("params");


                   4.為顯示頁面賦值也使用了Common對象。


                  a、 賦值簡單的字符串對象:common.addString("showParam", param);


                   第一個參數為頁面獲取該參數值使用的名稱,第二個為該對象名稱。


                   b、一次性賦值多個字符串對象:common.addArray(keys, values);


                   相對應的,keys為頁面獲取參數值的名稱,values為參數的值。


                  c、賦值一個復雜的對象,例如自定義對象或者一個List對象:


                      common.addObject("voname", vo);


                    用法一致。


                該框架提供一套通用的js腳本庫和一些統一的賦值規則,例如登錄用戶對象名稱,子系統名稱和提示名稱,因此common對象賦值也提供了一些特殊的方法,只接受參數的值,參數名稱為已定義名稱,因此在為頁面賦值也要注意不要與系統框架已定義對象名稱沖突。


                今天寫到這里,下一篇寫寫這個mvc框架的頁面邏輯,標簽還有這個腳本庫的內容吧。




          《 總結一下維護了一年的一個軟件系統的軟件體系(二) 》 的評論也很精彩,歡迎您也添加評論。查看詳細 >>





          JavaEye推薦
          上海樂福狗信息技術有限公司:誠聘技術經理和開發工程師
          免費下載IBM社區版軟件--它基于開放的標準,支持廣泛的開發類型,讓您的開發高效自主!
          京滬穗蓉四地免費注冊,SOA技術高手匯聚交鋒.
          上海:優秀公司德比:高薪誠聘 資深Java工程師
          廣州:優易公司:誠聘Java工程師,開發經理
          上海:尤恩斯國際集團:誠聘開發工程師
          北京:優秀公司NHNChina招聘:WEB開發,系統管理,JAVA開發, DBA



          文章來源: http://liuwei1981.javaeye.com/blog/107034
          posted on 2007-07-30 17:09 皇馬嘯西風 閱讀(178) 評論(0)  編輯  收藏

          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 台山市| 吉木萨尔县| 札达县| 道孚县| 襄樊市| 潍坊市| 彰武县| 拉萨市| 连城县| 绥阳县| 离岛区| 军事| 浦城县| 龙陵县| 札达县| 天祝| 沧源| 孟村| 灵石县| 融水| 门源| 重庆市| 若尔盖县| 罗田县| 桐庐县| 南昌县| 临汾市| 大化| 新乡县| 新邵县| 内丘县| 麦盖提县| 德格县| 新沂市| 精河县| 林西县| 观塘区| 华安县| 筠连县| 墨江| 青浦区|