国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學(xué)院 > 開發(fā)設(shè)計(jì) > 正文

STRUTS 入門教學(xué)(2)

2019-11-17 06:25:47
字體:
供稿:網(wǎng)友

  STRUTS 入門教學(xué)(2)

2. 創(chuàng)建Model組件
2.1 概述
你用到的應(yīng)用程序的需求文檔很可能集中于創(chuàng)建用戶界面。然而你應(yīng)該保證每個(gè)提交的請求所需要的處理也要被清楚的定義。通常說來,Model 組件的開發(fā)者集中于創(chuàng)建支持所有功能需求的javaBeans類。一個(gè)非凡應(yīng)用要求的beans的精確特性依靠于具體需求變化會非常的大,但是它們通常可以分成下面討論的幾種類型。然而,首先對“范圍”概念做一個(gè)簡短的回顧是有用的,因?yàn)樗cbeans有關(guān)。
2.2 JavaBeans和范圍
在一個(gè)基于web的應(yīng)用程序中,JavaBeans可以被保存在(并從中訪問)一些不同“屬性”的集合中。每一個(gè)集合都有集合生存期和所保存的beans可見度的不同的規(guī)則。總的說來,定義生存期和可見度的這些規(guī)則被叫做這些beans的 范圍 。jsp規(guī)范中使用以下術(shù)語定義可選的范圍(在圓括號中定義servlet API中的等價(jià)物):
page - 在一個(gè)單獨(dú)的JSP頁面中可見的Beans,生存期限于當(dāng)前請求。(service()方法中的局部變量) request - 在一個(gè)單獨(dú)的JSP頁面中可見的Beans,也包括所有包含于這個(gè)頁面或從這個(gè)頁面重定向到的頁面或servlet。(Request屬性)
session - 參與一個(gè)特定的用戶session的所有的JSP和servlet都可見的Beans,跨越一個(gè)或多個(gè)請求。(Session屬性)
application - 一個(gè)web應(yīng)用程序的所有JSP頁面和servlet都可見的Beans。(Servlet context屬性)
記住同一個(gè)web應(yīng)用程序的JSP頁面和servlets共享同樣一組bean集合是很重要的。例如,一個(gè)bean作為一個(gè)request屬性保存在一個(gè)servlet中,就象這樣:
代碼:

MyCart mycart = new MyCart(...);
request.setAttribute("cart", mycart);


將立即被這個(gè)servlet重定向到的一個(gè)JSP頁面使用一個(gè)標(biāo)準(zhǔn)的行為標(biāo)記看到,就象這樣:
代碼:

<jsp:useBean id="cart" scope="request"
class="com.mycompany.MyApp.MyCart"/>


2.3 ActionForm Beans
Struts框架通常假定你已經(jīng)為每一個(gè)你的應(yīng)用程序中請求的輸入創(chuàng)建了一個(gè) ActionForm bean(即一個(gè)實(shí)現(xiàn)了 ActionForm 接口的類)。假如你在你的 ActionMapping 配置文件中定義了這樣的beans(見“創(chuàng)建Controller組件”),Struts的controller servlet在調(diào)用適當(dāng)?shù)?Action 方法前將自動為你執(zhí)行如下的服務(wù):
用適當(dāng)?shù)囊ψ謾z查用戶的session中是否有適當(dāng)?shù)念惖腷ean的一個(gè)實(shí)例。
假如沒有這樣的session范圍的bean,自動建立一個(gè)新的bean并添加到用戶的session中。
對每個(gè)名字對應(yīng)于bean中的一個(gè)屬性的請求參數(shù),調(diào)用相應(yīng)的set方法。這個(gè)操作類似于當(dāng)你以通配符“*”選擇所有屬性使用標(biāo)準(zhǔn)的JSP行為標(biāo)記 代碼:
<jsp:setPRoperty>

更新的ActionForm bean在被調(diào)用時(shí)將被傳遞給Acton類的perform()方法,以使這些值能夠立即生效。
當(dāng)你在寫你的ActionForm beans時(shí),記住以下的原則:
ActionForm 接口本身不需要非凡的實(shí)現(xiàn)方法。它是用來標(biāo)識這些特定的beans在整個(gè)體系結(jié)構(gòu)中的作用。典型情況下,一個(gè)ActionForm bean只包括屬性的get方法和set方法,沒有商業(yè)邏輯。
通常在一個(gè)ActionForm bean中只有很少的輸入驗(yàn)證邏輯。這樣的beans存在的主要理由是保存用戶為相關(guān)的表單所輸入的大部分近期值 -- 甚至在錯(cuò)誤被檢測到時(shí) -- 這樣同樣的頁面可以被重建,伴隨有一組出錯(cuò)信息,這樣用戶僅僅需要糾正錯(cuò)誤的字段。用戶輸入的驗(yàn)證應(yīng)該在 Action 類中執(zhí)行(假如是很簡單的話),或者在適當(dāng)?shù)纳虡I(yè)邏輯beans中執(zhí)行。
為每個(gè)表單中出現(xiàn)的字段定義一個(gè)屬性(用相關(guān)的getXxx()和setXxx()方法)。字段名和屬性名必須按照J(rèn)avaBeans的約定相匹配。例如,一個(gè)名為 username 的輸入字段將引起 setUsername() 方法被調(diào)用。
你應(yīng)該注重一個(gè)“表單”在這里討論時(shí)的意義并不必須對應(yīng)于用戶界面中的一個(gè)單獨(dú)的JSP頁面。在很多應(yīng)用程序中一個(gè)“表單”(從用戶的觀點(diǎn))延伸至多個(gè)頁面也是很平常的。想想看,例如,通常在安裝新的應(yīng)用程序時(shí)使用的導(dǎo)航安裝程序的用戶界面。Struts鼓勵(lì)你定義一個(gè)包含所有字段屬性的單獨(dú)的ActionForm bean。不管字段實(shí)際上是顯示在哪個(gè)頁面上。同樣的,同一表單的不同的頁面應(yīng)該提交到相同的Action類。假如你遵照這個(gè)建議,在大多數(shù)情況下,頁面設(shè)計(jì)者可以重新組織不同頁面中的字段而不需要改變處理邏輯。
2.4 系統(tǒng)狀態(tài)Beans
系統(tǒng)的實(shí)際狀態(tài)通常表示為一組一個(gè)或多個(gè)的JavaBeans類,其屬性定義當(dāng)前狀態(tài)。例如,一個(gè)購物車系統(tǒng)包括一個(gè)表示購物車的bean,這個(gè)bean為每個(gè)單獨(dú)的購物者維護(hù),這個(gè)bean中包括(在其它事物之中)一組購物者當(dāng)前選擇購買的項(xiàng)目。分別地,系統(tǒng)也包括保存用戶信息(包括他們的信用卡和送貨地址)、可獲得項(xiàng)目的目錄和它們當(dāng)前庫存水平的不同的beans。
對于小規(guī)模的系統(tǒng),或者對于不需要長時(shí)間保存的狀態(tài)信息,一組系統(tǒng)狀態(tài)beans可以包含所有系統(tǒng)曾經(jīng)經(jīng)歷的特定細(xì)節(jié)的信息。或者經(jīng)常是,系統(tǒng)狀態(tài)beans表示永久保存在一些外部數(shù)據(jù)庫中的信息(例如CustomerBean對象對應(yīng)于表 CUSTOMERS 中的特定的一行),在需要時(shí)從服務(wù)器的內(nèi)存中創(chuàng)建或清除。在大規(guī)模應(yīng)用程序中,Entity EJBs也用于這種用途。


發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 夹江县| 澜沧| 天津市| 于都县| 石渠县| 鄂托克前旗| 扎赉特旗| 嘉禾县| 郸城县| 眉山市| 九寨沟县| 手游| 临湘市| 泉州市| 淮北市| 七台河市| 玉龙| 湘潭县| 大埔县| 台中县| 巴南区| 临猗县| 蒙自县| 磴口县| 呼伦贝尔市| 三穗县| 藁城市| 巴林右旗| 当涂县| 武清区| 青海省| 陕西省| 武胜县| 德州市| 合江县| 苏州市| 宁远县| 会昌县| 绥芬河市| 横峰县| 犍为县|