亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

J2EE中的設計模式

2019-11-18 12:16:51
字體:
來源:轉載
供稿:網友

  什么是Design Patten?
  簡單來說,Design Patten 就是一個常用的方案。 在我們的開發過程中,經常會碰到一些相同或者相近的問題,每次我們都會去尋找一個新的解決方法,為了節省時間提高效率,我們提供一些能夠解決這些常見問題的,被證實可行的方案,構成一個統一的資源庫。
  一個Design Patten描述了一個被證實可行的方案。這些方案非常普通,是有完整定義的最常用的模式。 這些模式可以被重用,有良好的伸縮性,而這些Design Patten的優勢將在設計J2EE應用時得到體現。
  1. Model-View-Controller
  a. 問題
  假如開發一個企業級應用,只需要一種客戶端的話,那么一切都非常輕易解決。但真實情況是,我們必須面對運行在各種設備上客戶端,象PDA,WAP瀏覽器以及運行在桌面上的瀏覽器,我們不得不開發不同的應用程序來處理來自不同客戶端的請求。數據訪問與現實將混淆在一起,可能會出現重復的數據訪問,導致整個開發周期沒有必要的延長。
  b. 建議的解決方法
  Model-View-Controller (MVC) 開發模式被證實是有效的處理方法之一。它可以分離數據訪問和數據表現。你可以開發一個有伸縮性的,便于擴展的控制器,來維護整個流程。如圖1所示為整個模式的結構。MVC模式可以被映射到多層企業級的J2EE應用上。
  § 所有的企業數據以及商業邏輯可以作為模式。
  § 視圖可以通過模式訪問數據,并根據客戶端的要求來顯示數據。視圖必須保證當模式改變的時候,數據顯示也必須同時改變。
  § 控制器用來結合模式和視圖,把客戶端來的請求轉換成模式能夠理解并執行的請求,并且根據請求以及執行結果來決定下一次顯示那一個視圖。
  根據以上的邏輯,你可以象這樣建立一個應用:
  § 應用的商業邏輯由MVC中的模式也就是EJB來表現。模式必須處理由控制器傳遞過來的對數據的訪問請求。
  § 多個頁面組成了MVC中的視圖,這些視圖必須隨模式一起更新。
  § 控制器是一系列接收用戶動作的對象,他們把用戶的請求轉換成模式可理解的請求,并決定顯示那一個頁面當模式處理完請求后。
  c. 要點
  § MVC結構適用于那些多用戶的,可擴展的,可維護的,具有很高交互性的系統。
  § MVC可以很好的表達用戶的交互和系統模式。
  § 很方便的用多個視圖來顯示多套數據,是系統很方便的支持其他新的客戶端類型。
  § 代碼重復達到最低。
  § 由于分離了模式中的流控制和數據表現,可以分清開發者的責任,另外,也可以加快產品推向市場的時間。
  2. Front Controller
  a. 問題
  MVC給出了一個整個應用的松散的耦合架構?,F在來看一下這樣一個經常發生的情況。在某一個應用中,用戶看到的視圖和他所做的操作密切相關。這是一些具有高度交互性的頁面,而這些頁面之間含有高度的依靠性。在沒有任何模式的時候,這個應用只是一個許多獨立的頁面的集合,維護和擴展變得異常困難。
  § 當一個頁面移動后,其他含有這個頁面鏈接的文件,都必須修改。
  § 當有一系列頁面需要口令保護時,許多配置文件需要修改,或者頁面需要包含新的標記。
  § 當一個頁面需要一個新的表示層時,頁面中的標記要被重新安排。
  當這個系統變得復雜時,這些問題將變得更糟。假如用MVC來解決的話,就變成一個如何治理控制器和視圖之間交互的問題。
  b. 建議的解決方法
  前臺控制模式可以解決這個問題。這個模式中,所有的請求都被傳送到一個對象中。這個主要的對象將處理所有的請求,決定以后顯示那一個視圖,以及實現必要的安全需求。對于把視圖顯示以及其他功能實現集中到一個主要的對象中,將使修改變得很輕易,對應用的修改,可以在所有視圖中反映出來。
  c. 要點
  § 這個模式對于需要在多個含有動態數據的頁面之間進行復雜導航的系統來說,是很有效的。
  § 這個模式對于要在所有頁面中都包含模板,轉換等的應用來說,也是很有效的。
  § 由于視圖的選擇集中在前端控制器上,因此,視圖的導航變得更加輕易理解和便于配置。
  § 視圖重用和變更會更加輕易。
  § 視圖之間的復雜交互,使得控制器變得復雜。從而,當應用發展的時候,控制器將變得難以維護。不過,大部分情況下可以用xml映射來解決。
  § 實現應用要求的安全性檢驗變得很簡單。
  § 這個模式不適合小型的,只顯示靜態內容的應用。
  d. 樣例
  § RequestMappings.xml 文件映射了傳入的請求,處理器以及下一個頁面。
  useRequestHandler="true"
  requiresSecurityCheck="true" nextScreen="screen2.jsp">
  com.blah1.blah2.blah3.request1Handler
  以上這個文件是控制器的指定配置,控制器的代碼如下:
  § FrontControllerImpl.java 利用上面的XML實現了控制器
  // all required imports
  // exceptions to be caught apPRopriately wherever applicable
  public class FrontControllerImpl extends HttpServlet {
  // all required declarations, definitions
  private HashMap requestMappings;
  public void init() {
  // load the mappings from XML file into the hashmap
  public void doPost(HttpServletRequest request,
  HttpServletResponse response)
  throws IOException, ServletException
  {
  doGet(request, response);
  }
  public void doGet(HttpServletRequest request, HttpServletResponse response)
  throws IOException, ServletException {
  String currentPage= request.getPathInfo();
  // get all mapping info for "currentPage" from the hashmap
  // if "securityCheckRequired = true", do the security check
  // if "useRequestHandler = true", pass on the incoming request to the specified handler
  // forward the results to the given "nextScreen"
  }
  }
  用這種方法實現的控制器將很輕易維護,當應用有新的變動的時候,只要修改XML文件就能解決了。前臺控制模式將使在視圖和控制器之前有復雜交互的J2EE應用變得簡單。
  3. session Fa?ade
  a. 問題
  前臺控制給出了一個基于MVC的,能有效治理用戶與J2EE應用之間進行的復雜交互。這個模式可以使處理頁面的現實順序和用戶的并發請求變得簡單。并且使增加和改變頁面現實變得更加輕易。
  另外一個常見的問題是,當EJB或者業務邏輯發生變化的時候,應用的客戶端也必須隨之改變。我們來看一下這個問題。
  一般來說,為了表現一個賬戶中的用戶,我們使用一個業務邏輯來表示賬戶中的信息,象用戶名和口令,再用一個EJB來治理用戶的個人信息,象愛好,語言等。當要創建一個新的賬號或者修改一個已經存在的賬號時,必須訪問包含賬號信息的EJB,讀取個人信息,修改并且保存,這樣的一個流程。
  當然,這只是一個非常簡單的例子,實際情況可能比這個復雜的多,象查看用戶定制了哪些服務,檢驗客戶信用卡的有效性,存放訂單等。在這個案例中,為了實現一個完整的流程,客戶端必須訪問賬戶EJB來完成一系列適當的工作。下面的例子顯示了一個Servlet客戶端如何來控制一個用戶訂單。
  A servlet that does the workflow required for placing an order
  
  // all required imports;
  // exceptions to be caught appropriately wherever applicable;
  // This servlet assumes that for placing an order the account and
  // credit status of the customer has to be checked before getting the
  // approval and committing the order. For simplicity, the EJBs that
  // represent the business logic of account, credit status etc are
  // not listed
  
  public class OrderHandlingServlet extends HttpServlet {
  
  // all required declarations, definitions
  
  public void init() {
  // all inits required done here
  }
  
  public void doPost(HttpServletRequest request, HttpServletResponse response)
  throws IOException, ServletException {
  // other logic as required
  // Get reference to the required EJBs
  InitialContext ctxt = new InitialContext();
  Object obj = ctxt.lookup("java:comp/env/ejb/UserAccount");
  UserAccountHome acctHome = (UserAccountHome)
  PortableRemoteObject.narrow(obj, UserAccountHome.class);
  UserAccount acct = acctHome.create();
  obj = ctxt.lookup("java:comp/env/ejb/CreditCheck");
  CreditCheckHome creditCheckHome = (CreditCheckHome)
  PortableRemoteObject.narrow(obj, CreditCheckHome.class);
  CreditCheck credit = creditCheckHome.create();
  obj = ctxt.lookup("java:comp/env/ejb/Approvals");
  ApprovalsHome apprHome = (ApprovalsHome)
  PortableRemoteObject.narrow(obj, ApprovalsHome.class);
  Approvals appr = apprHome.create();
  obj = ctxt.lookup("java:comp/env/ejb/CommitOrder");
  CommitOrderHome orderHome = (CommitOrderHome)
  PortableRemoteObject.narrow(obj, CommitOrderHome.class);
  CommitOrder order = orderHome.create();
  // Acquire the customer ID and order details;
  // Now do the required workflow to place the order
  int resul

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产一区二区日韩精品欧美精品| 国产女同一区二区| 欧美激情a∨在线视频播放| 亚洲一区二区三区视频播放| 亚洲精品国产拍免费91在线| 性欧美暴力猛交69hd| 亚洲精品国产精品久久清纯直播| 国产精品精品国产| 日韩电影免费观看中文字幕| 色偷偷av一区二区三区乱| 久久久伊人欧美| 欧美久久精品午夜青青大伊人| 最近中文字幕日韩精品| 91高清视频免费| 亚洲性生活视频| 国产成人精品日本亚洲专区61| 国语对白做受69| 91精品久久久久久久久不口人| 中文字幕精品影院| 日韩中文字幕网| 成人黄色在线免费| 日本一区二区在线播放| 亚洲人高潮女人毛茸茸| 欧美裸体xxxx极品少妇软件| 欧美xxxx14xxxxx性爽| 欧美性在线观看| 久久天天躁狠狠躁夜夜爽蜜月| 国产精品久久久久久五月尺| 国产一区二区成人| 97久久超碰福利国产精品…| 久久全国免费视频| 久久精品久久久久久| 国产一区视频在线播放| 欧美三级免费观看| 午夜精品在线视频| 亚洲成人黄色在线观看| 欧美性猛交xxxx免费看久久久| 国产精品视频精品视频| 国产视频一区在线| 亚洲欧洲日产国码av系列天堂| 欧美一区在线直播| 欧美夫妻性生活视频| 57pao成人国产永久免费| 亚洲欧美日韩精品久久| 日韩av在线最新| 一区二区三区黄色| 国内精久久久久久久久久人| 亚洲va久久久噜噜噜久久天堂| 91欧美视频网站| 欧美性猛交xxxxx水多| 国产91精品久久久| 91免费视频国产| 米奇精品一区二区三区在线观看| 日韩有码片在线观看| 国产日韩中文字幕在线| 亚洲www永久成人夜色| 91成品人片a无限观看| 久久亚洲春色中文字幕| 日韩久久精品成人| 亚洲综合中文字幕在线| 国产欧美日韩亚洲精品| 国产女精品视频网站免费| 久久躁狠狠躁夜夜爽| 热久久视久久精品18亚洲精品| 中文日韩电影网站| 国产精品一区久久久| 欧美激情小视频| 最新日韩中文字幕| 欧美激情18p| 欧美日韩亚洲高清| 一区二区三区视频观看| 国产精品欧美一区二区| 在线看国产精品| 欧美视频第一页| 日韩精品久久久久| 欧美色xxxx| 成人免费视频a| 深夜福利亚洲导航| 欧美日韩国产成人| 欧美大片在线看| 国产一区二区激情| 国产精品久久久久久久久久久久久久| 欧美日韩国产页| 国产日韩欧美成人| 国产精品久久久av| 亚洲天堂第一页| 国产不卡一区二区在线播放| 亚洲欧美日韩网| 懂色aⅴ精品一区二区三区蜜月| 亚洲男人av电影| 亚洲男人天堂视频| 国产精品香蕉国产| 中文字幕日韩av电影| 欧美裸体xxxx极品少妇软件| 美女视频久久黄| xvideos成人免费中文版| 久久久999国产| 亚洲香蕉av在线一区二区三区| 主播福利视频一区| 亚洲人成欧美中文字幕| 一区二区三区视频免费| 国产成人精品a视频一区www| 操人视频在线观看欧美| 奇米四色中文综合久久| 亚洲毛片一区二区| 国产91在线高潮白浆在线观看| 4438全国成人免费| 日韩欧美在线免费观看| 欧美激情精品久久久久久| 欧美精品日韩三级| 亚洲一区制服诱惑| 欧美在线观看日本一区| 午夜欧美大片免费观看| 国产一区二区色| 欧美国产欧美亚洲国产日韩mv天天看完整| 日韩有码片在线观看| 57pao成人永久免费视频| 亚洲精品少妇网址| 亚洲国产精品专区久久| 欧美插天视频在线播放| 亚洲高清不卡av| 亚洲一区二区在线| 国产精品欧美激情在线播放| 成人免费高清完整版在线观看| 亚洲丝袜一区在线| 欧美交受高潮1| 成人性生交大片免费看小说| 中国人与牲禽动交精品| 日韩中文字幕视频在线观看| 欧美成人h版在线观看| 精品露脸国产偷人在视频| 日本国产精品视频| 久久久视频在线| 欧美激情中文字幕在线| 欧美黑人xxxⅹ高潮交| 亚洲国产成人精品一区二区| 日韩视频免费在线观看| 欧美午夜激情视频| 亚洲人成在线观看网站高清| 日本韩国欧美精品大片卡二| 日韩欧美成人免费视频| 国产日韩中文在线| 日韩欧美国产骚| 国产色综合天天综合网| 欧美理论电影网| 亚洲欧美成人网| 这里只有精品在线观看| 2018中文字幕一区二区三区| 自拍偷拍亚洲一区| 日韩中文字在线| 国产91精品网站| 欧美性在线视频| 欧美xxxx14xxxxx性爽| 欧美久久久精品| 国产日韩欧美视频| 久久综合五月天| 亚洲免费视频一区二区| 亚州国产精品久久久| 91在线免费视频| 国产国语刺激对白av不卡| 国内精品久久久久伊人av| 欧美天堂在线观看| 亚洲国产天堂久久国产91| 欧美激情第6页|