一级日韩免费大片,亚洲一区二区三区高清,性欧美乱妇高清come,久久婷婷国产麻豆91天堂,亚洲av无码a片在线观看

J2EE表現層設計思考核心

時(shí)間:2024-08-31 14:11:49 J2EE培訓 我要投稿
  • 相關(guān)推薦

J2EE表現層設計思考核心

  J2EE表現層設計思考核心是什么?下面yjbys小編為大家分享最新J2EE表現層設計解讀,希望對大家學(xué)習J2EE有所幫助!

  設計表現層時(shí)需要考慮的幾個(gè)問(wèn)題

  開(kāi)發(fā)者在設計表現層時(shí),可以使用不同的模型,這時(shí)需要考慮一些相關(guān)的設計問(wèn)題。這些問(wèn)題和模型關(guān)系的緊密程度也各有不同,它們可以影響系統的各個(gè)方面,包括有安全、數據完整性、可管理性和擴展性。雖然這些設計問(wèn)題大部分都可以用模型的形式表示,但我們不打算這樣做,因為這樣更為抽象,我們選擇以非正式的文檔形式表示。我們只是根據不同的模型,將每個(gè)需要考慮的問(wèn)題列出來(lái)。

  Session管理

  用戶(hù)Session指的是跨越一個(gè)客戶(hù)和服務(wù)器多個(gè)請求間的一個(gè)對話(huà)。我們將在以下部分根據用戶(hù)Session的概念討論這個(gè)問(wèn)題。

  客戶(hù)端的Session狀態(tài)

  在客戶(hù)端保存Session的狀態(tài)指的是將Session的狀態(tài)串行化并且嵌入到返回給客戶(hù)的HTML頁(yè)面中。

  在客戶(hù)端保存Session的狀態(tài)有這以下的好處:

  . 它實(shí)現起來(lái)相對容易

  . 在保存少量的狀態(tài)信息時(shí),它工作得很好

  此外,這個(gè)策略還消除了跨越多個(gè)服務(wù)器復制狀態(tài)的問(wèn)題,例如多個(gè)服務(wù)器間實(shí)現負載均衡時(shí)就會(huì )遇到這種情況。

  在客戶(hù)端保存Session狀態(tài)通常有兩個(gè)方法HTML的隱藏字段和HTTP cookies我們將在下面討論這些策略。第三個(gè)策略則是在每個(gè)頁(yè)面的URL中嵌入Session狀態(tài)信息。

  雖然第三個(gè)方法比較少見(jiàn),但它也有著(zhù)其它兩個(gè)方法的許多限制。

  HTML的隱藏字段(HTML Hidden Fields)

  雖然這個(gè)方法實(shí)現起來(lái)相對容易,不過(guò)使用HTML隱藏字段在客戶(hù)端保存Session狀態(tài)仍然有著(zhù)許多的缺點(diǎn)。這些缺點(diǎn)在保存大量的狀態(tài)時(shí)尤為突出。保存大量的狀態(tài)將會(huì )對性能有很大的影響。因為每次發(fā)出請求和響應時(shí),都需要在網(wǎng)絡(luò )中傳送這些狀態(tài)信息。

  此外,當你利用隱藏的字段來(lái)保存Session狀態(tài)時(shí),這些持久的狀態(tài)值只能是字符串值,因此所有的對象引用都必須被“字符串化”,而這些信息除非經(jīng)過(guò)特別的加密,否則都是以明文的形式顯示在HTML的源代碼中。

  HTTP Cookies

  與隱藏字段的方法一樣,使用HTTP Cookies的方式也是相對簡(jiǎn)單的。不幸的是,這兩個(gè)方法有著(zhù)許多相同的缺點(diǎn)。特別是,在保存大量的狀態(tài)信息時(shí)將會(huì )對性能產(chǎn)生很大的影響,因為在每次的請求和響應時(shí),都必須在網(wǎng)絡(luò )上傳送全部的Session狀態(tài)信息。

  在客戶(hù)端保存Session狀態(tài)時(shí),我們也會(huì )遇到大小和類(lèi)型的局限問(wèn)題。cookie headers的大小是有限制的,這樣就限制了可以被持久保存的數據量,而且和隱藏字段的方法一樣,當你使用cookies來(lái)保存Session狀態(tài)時(shí),這些持久的狀態(tài)信息只能使用字符串值。

  在客戶(hù)端保存Session狀態(tài)會(huì )帶來(lái)的安全問(wèn)題

  當你在客戶(hù)端保存Session狀態(tài)時(shí),你必須考慮到由此帶來(lái)的安全問(wèn)題。如果你不想數據暴露給客戶(hù)端,你就需要一些方法來(lái)加密數據,從而保證數據的安全。

  雖然在客戶(hù)端保存Session狀態(tài)相對容易實(shí)現,不過(guò)它有著(zhù)很多的缺點(diǎn),這些都要我們花費時(shí)間去解決。對于需要處理大量數據的項目,特別是企業(yè)的系統,使用這種方式是得不償失的。

  表現層的Session狀態(tài)

  當Session狀態(tài)保存在服務(wù)器端時(shí),它使用一個(gè)Session ID得到,并且會(huì )一直保持住,直到發(fā)生以下的情形:

  . 一個(gè)預定義的Session超時(shí)發(fā)生了

  . Session被手動(dòng)設置為無(wú)效

  . 狀態(tài)由Session中移除

  要注意的是服務(wù)器關(guān)閉后,一些內存中的Session管理機制可能不能恢復。

  很明顯,對于要保存大量Session狀態(tài)的應用,將它們的Session狀態(tài)放在服務(wù)器是更好的。當狀態(tài)被保存在服務(wù)器上時(shí),你不會(huì )有客戶(hù)端Session管理的大小和類(lèi)型限制。此外,還避免了由此帶來(lái)的安全問(wèn)題,而且也不會(huì )遇到由于在每個(gè)請求間傳送Session狀態(tài)帶來(lái)的性能影響。

  使用該方式,你可以更加靈活地作處理,并且便于擴展和提高性能。

  如果你在服務(wù)器上保存Session狀態(tài),你必須要決定如何使該狀態(tài)信息被每個(gè)服務(wù)器得到,即你運行該應用的服務(wù)器。如果群集的軟件是運行在負載均衡的硬件上,那么就要處理這個(gè)Session狀態(tài)的復制問(wèn)題,這是一個(gè)多維的問(wèn)題,不過(guò),眾多的應用服務(wù)器現在都提供了各種各樣的解決方案。也就是說(shuō),在應用服務(wù)器的級別上有解決的方法。其中的一個(gè)方法是保證用戶(hù)只與一個(gè)服務(wù)器打交道,它在流量管理軟件上用得比較多,例如Resonate [Resonate]的軟件,在用戶(hù)的Session中,該用戶(hù)發(fā)出的每個(gè)請求都會(huì )被路由到同一個(gè)服務(wù)器處理。這種方式也被稱(chēng)為server affinity。

  另一個(gè)可選的方式是在商業(yè)層或者資源層保存Session狀態(tài)。企業(yè)JavaBeans組件可用來(lái)在商業(yè)層保存Session的狀態(tài),而一個(gè)關(guān)系數據庫則可用在資源層。

  控制客戶(hù)

  有很多時(shí)候我們都要限制或者控制客戶(hù)端某些應用資源。下面我們就來(lái)討論其中兩種這樣的情形。

  限制或者控制客戶(hù)的一個(gè)原因是防止一個(gè)視圖或者部分的視圖被一個(gè)客戶(hù)直接。這個(gè)問(wèn)題會(huì )發(fā)生在以下情況,例如僅有注冊或者登陸后的用戶(hù)才可允許一個(gè)特別的視圖,或者是根據用戶(hù)的角色限制用戶(hù)部分的視圖。

  在描述過(guò)這個(gè)問(wèn)題后,我們將討論第二種情況,它和控制應用中一個(gè)用戶(hù)的流程有關(guān)。后者的討論和重復的form提交有關(guān),因為多次提交將會(huì )導致不必要的重復事務(wù)。

  控制視圖

  在一些情況下,資源被限制為完全不允許某些用戶(hù)。有幾個(gè)方法可以做到這一點(diǎn)。一個(gè)方法是加入應用邏輯到處理控制器或者視圖的程序中,禁止某些用戶(hù)。另一個(gè)方案是設置運行時(shí)的系統,對于一些資源,僅允許經(jīng)由另一個(gè)應用資源內部調用。在這種情形,對于這些資源的必須被通過(guò)另一個(gè)表現層的應用資源進(jìn)行,例如一個(gè)servlet控制器。對于這些受限制的資源不允許通過(guò)一個(gè)瀏覽器直接調用。

  處理這個(gè)問(wèn)題的一個(gè)常見(jiàn)方法是使用一個(gè)控制器來(lái)作為該類(lèi)控制的一個(gè)委托者。另一個(gè)常見(jiàn)的方式是在一個(gè)視圖中置入一個(gè)保護設置。我們這里主要討論基于視圖的控制策略。在考慮選擇何種方式來(lái)控制之前,我們首先來(lái)描述一下這些策略。

  在視圖中置入保護邏輯

  對于在一個(gè)視圖的處理中置入一個(gè)保護邏輯,有兩個(gè)常見(jiàn)的應用。一個(gè)是防止整個(gè)的資源,而另一個(gè)是限制部分的資源。

  在每個(gè)視圖中包含一個(gè)All-or-Nothing保護

  在一些情況下,置入到視圖處理代碼中的邏輯以all-or-nothing的模式允許或者拒絕。也就是說(shuō),這個(gè)邏輯限制某個(gè)特別的用戶(hù)一個(gè)特別的視圖。通常這一類(lèi)型的保護最好封裝到一個(gè)中央化的控制器中,這樣便于集中化管理。如果只有很少的頁(yè)面需要防護,那么可以使用這個(gè)策略。通常這個(gè)情形都是發(fā)生在一個(gè)非技術(shù)人員需要更新網(wǎng)站一小部分的靜態(tài)文件。如果客戶(hù)仍然需要登陸到網(wǎng)站來(lái)瀏覽這些頁(yè)面,那么只需要在每個(gè)頁(yè)面的頂部加入一個(gè)自定義的tag(標記)就可以做到控制。如3.1的例子所示。

  例子3.1 在每個(gè)視圖中包含一個(gè)All-or-Nothing保護

 。%@ taglib uri="/WEB-INF/corej2eetaglibrary.tld"
  prefix="corePatterns" %>
 。糲orePatterns:guard/>
 。糎TML>
  .
  .
  .
 。/HTML>

  給視圖的某些部分加入保護

  在其它情況下,置入到視圖處理代碼的邏輯可拒絕一個(gè)視圖的某些部分。這個(gè)策略可以和上面的all-or-nothing策略一起使用。為說(shuō)明這一點(diǎn),我們這里使用控制一個(gè)建筑物中的一個(gè)房間作類(lèi)比。all-or-nothing的保護策略告訴用戶(hù)是否可以進(jìn)入房間,而第二個(gè)保護策略則是告訴用戶(hù)在進(jìn)入房間后,允許他們看到什么東西。以下就是一些你可以利用這個(gè)策略的例子。

  根據用戶(hù)的角色決定是否顯示視圖的某些部分

  根據用戶(hù)的角色,視圖的某部分可能不顯示。例如,一個(gè)經(jīng)理在收看管理信息時(shí),他可以到其員工的子視圖,而作為一個(gè)員工,他只可以看到自己組織的信息,而不可以其它信息,如例子3.2所示。

  例子3.2 根據用戶(hù)的角色,部分的視圖不顯示

 。%@ taglib uri="/WEB-INF/corej2eetaglibrary.tld"
  prefix="corePatterns" %>
 。糎TML>
 。糲orePatterns:guard role="manager">
 。糱>This should be seen only by managers!</b>
 。糲orePatterns:guard/>
 。/HTML>

  This should be seen only by managers!

  根據系統的狀態(tài)或者錯誤情形不顯示部分的視圖

  根據系統的環(huán)境,顯示的規劃可以被修改。例如,如果用戶(hù)使用的是一個(gè)單CPU的硬件設備,那么使用多個(gè)CPU的部分設備就可以不顯示。

  根據配置控制資源

  要限制某個(gè)客戶(hù)直接一個(gè)特別的視圖,你可以配置表現層只有通過(guò)內部的資源才可以到這些資源,例如一個(gè)使用RequestDispatcher的servlet控制器。此外,你還可以使用Web容器中內置

  的安全技術(shù),根據servlet2.2或者以后的規范。安全限制被定義在稱(chēng)為web.xml的配置描述文件中(deployment descriptor)。

  basic和form-based的認證方法在Servlet規范中也有描述。在此我們不打算重復這個(gè)規范,你可以到以下網(wǎng)址去查看當前規范的細節(http://java.sun.com/products/servlet/)。

  你已經(jīng)明白了加入安全限制到你的應用時(shí)會(huì )有什么用處,我們簡(jiǎn)要討論了這個(gè)問(wèn)題并且介紹了如何通過(guò)配置令它和all-or-nothing保護相關(guān)。最后,我們描述了一個(gè)簡(jiǎn)單和常用的方法作為all-or-nothing保護,以限制一個(gè)資源的。

  通過(guò)安全限制保護資源

  應用或許被配置在一個(gè)安全限制中,而這個(gè)安全限制允許使用編程的方法根據用戶(hù)的角色來(lái)控制。資源可以被某些角色的用戶(hù),并且禁止其它的角色。另外,某個(gè)視圖的一部分也可以根據用戶(hù)的角色來(lái)限制。

【J2EE表現層設計思考核心】相關(guān)文章:

J2EE核心技術(shù)08-05

J2EE的13種核心技術(shù)09-01

J2EE架構與設計培訓08-30

淺析躍層設計要點(diǎn)09-12

企業(yè)核心競爭力的表現形式08-07

J2EE設計模式圖書(shū)目錄06-17

錯層餐廳如何裝修設計07-24

設計素描表現方法09-28

設計素描的表現方法08-12

談?wù)勂矫嬖O計的核心-標志09-27

一级日韩免费大片,亚洲一区二区三区高清,性欧美乱妇高清come,久久婷婷国产麻豆91天堂,亚洲av无码a片在线观看