好·色之徒
          已經(jīng)轉(zhuǎn)移到 好·色之徒--我的博客、我的生活

          在上一篇文章中談?wù)摿擞嘘P(guān)MVC中C的部分,這里開(kāi)始說(shuō)明如何搭建M的部分,這里的M,不當(dāng)當(dāng)是簡(jiǎn)單的數(shù)據(jù)模型,更多的涉及到了業(yè)務(wù)邏輯的成分。
          上一篇中的UctServlet類(lèi)實(shí)現(xiàn)了控制,提到了用于控制流程的數(shù)據(jù)庫(kù)中有一個(gè)字段alink(值為HAAap),里面的內(nèi)容就是現(xiàn)在要講解的部分。 從UctServlet,到交由具體某個(gè)類(lèi)來(lái)實(shí)現(xiàn)業(yè)務(wù)邏輯,HAAap就是這樣一個(gè)類(lèi),不需要繼承特殊的框架體系,完全有自己開(kāi)發(fā)。這里需要明確一點(diǎn),為了整個(gè)應(yīng)用體系的相對(duì)完整性,可以設(shè)計(jì)一個(gè)共通M類(lèi)(比如這里的UctApSuper),主要負(fù)責(zé)一些共通的業(yè)務(wù)和資源。HAAap繼承于它。

          結(jié)合UctServlet類(lèi)的核心邏輯(可參考不借助任何web框架結(jié)構(gòu),構(gòu)建自己的MVC應(yīng)用程序(1)部分),會(huì)通過(guò)反射機(jī)制首先調(diào)用某M類(lèi)(HAAap)的apexec方法。所以對(duì)共通M類(lèi)(UctApSuper)有這樣的設(shè)計(jì):
          public UctApSuper() {
          DBA = new uct.UctDBIO(); //數(shù)據(jù)源設(shè)定
          sUser = new uct.UctUser(); //UctUser
          psApName = UctUser.getApName();
          }

          public void apexec(HttpServletRequest preq, HttpServletResponse pres,
          HttpSession phtss) throws IOException, ServletException {
          try {
          this.req = preq;
          this.res = pres;
          this.uses = phtss;

          uhData = this.getPVal(); // Window畫(huà)面所有的key-value值對(duì),uhData是Hashtable

          res.setContentType("text/html");
          } catch (Throwable e) {
          System.out.println("ApSuper.apexec Throwable = " + e);
          this.errPage(req, res, psApName, "ApSuper.apexec :ERROR=" + e);
          }
          }
          設(shè)置了一些共通需要的資源
          除了上面的以外,在UctApSuper類(lèi)中還有比如:apfCallJsp(成功后調(diào)用jsp資源)、errPage(失敗后調(diào)用錯(cuò)誤資源)等等共通的處理,具體的實(shí)現(xiàn)方式以后源碼下載中會(huì)提供。

          下面描述一下具體的M類(lèi)(HAAap),它繼承于UctApSuper類(lèi),給出一些代碼片斷:
          public class HAAap extends UctApSuper {
          //定義一些畫(huà)面(通常一個(gè)M類(lèi)會(huì)管理從List-input-confirm畫(huà)面的過(guò)程)
          private String psListJSP = "HAA/H01010";
          private String psInputJSP = "HAA/H01020";
          private String psConfirmJSP = "HAA/H01030";
          public HAAap() {
          }
          這里我再列出上一篇文章中提到的控制流程的數(shù)據(jù)表
          alink atype window_id action_id
          HAAap BEAN WIN_HGA HAA ----年度計(jì)劃畫(huà)面 初始的一種狀態(tài)
          HAAap BEAN WIN_HGA SRDT ----SRDT表示年度計(jì)劃畫(huà)面上的檢索功能
          HAAap BEAN WIN_HGA DTIL ----DTIL表示年度計(jì)劃畫(huà)面上的詳細(xì)畫(huà)面功能
          /**
          * 按照畫(huà)面url上的 ?Window=WINHGA&Action=HAA,來(lái)判斷應(yīng)該進(jìn)入那一邏輯部分
          */
          public void apexec(HttpServletRequest preq, HttpServletResponse pres, HttpSession phtss) {
          try {
          //UctApSuper類(lèi)的apexec方法,設(shè)置共通資源
          super.apexec(preq, pres, phtss);
          //取得參數(shù)Action值,以確認(rèn)進(jìn)入那一邏輯部分
          sEventType = getPVal("Action");
          apinit(); // 該M的一般初始化處理

          //判斷進(jìn)入那一邏輯部分
          if (sEventType.equalsIgnoreCase("HAA")) {
          apmInit(); // 初始畫(huà)面
          } else if (sEventType.equalsIgnoreCase("RINS")) {
          apmNew(); // 新增加畫(huà)面
          } else if (sEventType.equalsIgnoreCase("DTIL")) {
          apmDetails(); // 詳細(xì)畫(huà)面
          } else {
          this.apfFwkErr(sEventType);
          }

          //共通結(jié)束處理
          apexit();
          } catch (Exception e) {
          errPage(req, res, "apexec", e); // ERROR
          } finally {

          }
          }

          下面依次是apinit();apmInit();apmNew(); ......等的具體處理內(nèi)容,舉一例:
          private void apmDetails() {
          try {
          ...業(yè)務(wù)邏輯
          apfCallJsp(psInputJSP); // 調(diào)用JSP資源
          } catch (Exception e) {
          errPage(req, res, "apmDetails", e); // ERROR
          } finally {

          }
          }
          }

          這些就是M類(lèi)的處理過(guò)程,代碼作了相應(yīng)修改

          不借助任何web框架結(jié)構(gòu),構(gòu)建自己的MVC應(yīng)用程序(3)?? 有個(gè)論壇

          Feedback

          # re: 不借助任何web框架結(jié)構(gòu),構(gòu)建自己的MVC應(yīng)用程序(3)  回復(fù)  更多評(píng)論   

          2006-11-02 14:12 by fef
          你是否才華橫溢而無(wú)奈沒(méi)有滿意的工作,

          沒(méi)關(guān)系,全球最大最早的網(wǎng)上軟件工廠已經(jīng)騰空出世了!

          即可注冊(cè)米鼠網(wǎng)會(huì)員,就可兼職,做項(xiàng)目,賺大錢(qián)。
          大家,推廣米鼠6,8群。米鼠6,8群32141736,32141620


          # re: 不借助任何web框架結(jié)構(gòu),構(gòu)建自己的MVC應(yīng)用程序(3)  回復(fù)  更多評(píng)論   

          2006-11-02 14:13 by fef
          你是否經(jīng)驗(yàn)不足而求職碰壁。

          沒(méi)關(guān)系,全球最大最早的網(wǎng)上軟件工廠已經(jīng)騰空出世了!

          即可注冊(cè)米鼠網(wǎng)會(huì)員,就可兼職,做項(xiàng)目,賺大錢(qián)。
          大家,推廣米鼠6,8群。米鼠6,8群32141736,32141620

          只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


          網(wǎng)站導(dǎo)航:
           

          posts - 39, comments - 91, trackbacks - 0, articles - 1

          Copyright © 城市劣人

          好·色之徒
          主站蜘蛛池模板: 金乡县| 祁连县| 光泽县| 厦门市| 西宁市| 客服| 调兵山市| 霍州市| 昌邑市| 申扎县| 大关县| 喜德县| 滕州市| 洪泽县| 周至县| 黄陵县| 乌苏市| 武城县| 新绛县| 剑阁县| 密云县| 电白县| 阿勒泰市| 修武县| 西丰县| 双牌县| 罗平县| 深州市| 金寨县| 赤水市| 永昌县| 荃湾区| 河北省| 额济纳旗| 临沧市| 丘北县| 雷波县| 湘潭市| 九江市| 嘉兴市| 柳林县|