好·色之徒
          已經轉移到 好·色之徒--我的博客、我的生活

          在上一篇文章中談論了有關MVC中C的部分,這里開始說明如何搭建M的部分,這里的M,不當當是簡單的數據模型,更多的涉及到了業務邏輯的成分。
          上一篇中的UctServlet類實現了控制,提到了用于控制流程的數據庫中有一個字段alink(值為HAAap),里面的內容就是現在要講解的部分。 從UctServlet,到交由具體某個類來實現業務邏輯,HAAap就是這樣一個類,不需要繼承特殊的框架體系,完全有自己開發。這里需要明確一點,為了整個應用體系的相對完整性,可以設計一個共通M類(比如這里的UctApSuper),主要負責一些共通的業務和資源。HAAap繼承于它。

          結合UctServlet類的核心邏輯(可參考不借助任何web框架結構,構建自己的MVC應用程序(1)部分),會通過反射機制首先調用某M類(HAAap)的apexec方法。所以對共通M類(UctApSuper)有這樣的設計:
          public UctApSuper() {
          DBA = new uct.UctDBIO(); //數據源設定
          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畫面所有的key-value值對,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);
          }
          }
          設置了一些共通需要的資源
          除了上面的以外,在UctApSuper類中還有比如:apfCallJsp(成功后調用jsp資源)、errPage(失敗后調用錯誤資源)等等共通的處理,具體的實現方式以后源碼下載中會提供。

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

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

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

          }
          }

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

          }
          }
          }

          這些就是M類的處理過程,代碼作了相應修改

          不借助任何web框架結構,構建自己的MVC應用程序(3)?? 有個論壇

          Feedback

          # re: 不借助任何web框架結構,構建自己的MVC應用程序(3)  回復  更多評論   

          2006-11-02 14:12 by fef
          你是否才華橫溢而無奈沒有滿意的工作,

          沒關系,全球最大最早的網上軟件工廠已經騰空出世了!

          即可注冊米鼠網會員,就可兼職,做項目,賺大錢。
          大家,推廣米鼠6,8群。米鼠6,8群32141736,32141620


          # re: 不借助任何web框架結構,構建自己的MVC應用程序(3)  回復  更多評論   

          2006-11-02 14:13 by fef
          你是否經驗不足而求職碰壁。

          沒關系,全球最大最早的網上軟件工廠已經騰空出世了!

          即可注冊米鼠網會員,就可兼職,做項目,賺大錢。
          大家,推廣米鼠6,8群。米鼠6,8群32141736,32141620

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


          網站導航:
           

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

          Copyright © 城市劣人

          好·色之徒
          主站蜘蛛池模板: 宁安市| 会泽县| 城口县| 秭归县| 正蓝旗| 和林格尔县| 灵璧县| 陕西省| 商南县| 玉溪市| 甘洛县| 江西省| 响水县| 渭南市| 许昌县| 双江| 治县。| 乌拉特后旗| 子长县| 白山市| 长岛县| 阳朔县| 朝阳区| 淮安市| 镇平县| 汶川县| 巴彦淖尔市| 依兰县| 勃利县| 莱州市| 商水县| 三亚市| 郁南县| 竹溪县| 石狮市| 乌兰察布市| 徐州市| 阿勒泰市| 惠州市| 来凤县| 呼伦贝尔市|