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

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

J2EE MVC模式JSF與Struts的異同

2019-11-18 15:42:46
字體:
供稿:網(wǎng)友

  Struts和JSF/Tapestry都屬于表現(xiàn)層框架,這兩種分屬不同性質(zhì)的框架,后者是一種事件驅(qū)動型的組件模型,而Struts只是單純的MVC模式框架,老外總是急吼吼說事件驅(qū)動型就比MVC模式框架好,何以見得,我們下面進(jìn)行具體分析比較一下到底是怎么回事?

  首先事件是指從客戶端頁面(瀏覽器)由用戶操作觸發(fā)的事件,Struts使用Action來接受瀏覽器表單提交的事件,這里使用了Command模式,每個繼續(xù)Action的子類都必須實現(xiàn)一個方法execute。

  在struts中,實際是一個表單Form對應(yīng)一個Action類(或DispatchAction),換一句話說:在Struts中實際是一個表單只能對應(yīng)一個事件,struts這種事件方式稱為application event,application event和component event相比是一種粗粒度的事件。

  struts重要的表單對象ActionForm是一種對象,它代表了一種應(yīng)用,這個對象中至少包含幾個字段,這些字段是jsp頁面表單中的input字段,因為一個表單對應(yīng)一個事件,所以,當(dāng)我們需要將事件粒度細(xì)化到表單中這些字段時,也就是說,一個字段對應(yīng)一個事件時,單純使用Struts就不太可能,當(dāng)然通過結(jié)合javascript也是可以轉(zhuǎn)彎實現(xiàn)的。

  而這種情況使用JSF就可以方便實現(xiàn),

<h:inputText id="userId" value="#{login.userId}">
 ?。糵:valueChangeListener type="logindemo.UserLoginChanged" />
</h:inputText>

  #{login.userId}表示從名為login的JavaBean的getUserId獲得的結(jié)果,這個功能使用struts也可以實現(xiàn),name="login"

  要害是第二行,這里表示假如userId的值改變并且確定提交后,將觸發(fā)調(diào)用類UserLoginChanged的processValueChanged(...)方法。

  JSF可以為組件提供兩種事件:Value Changed和 Action. 前者我們已經(jīng)在上節(jié)見識過用處,后者就相當(dāng)于struts中表單提交Action機(jī)制,它的JSF寫法如下:

<h:commandButton id="login" commandName="login">
 ?。糵:actionListener type=”logindemo.LoginActionListener” />
</h:commandButton>

  從代碼可以看出,這兩種事件是通過Listerner這樣觀察者模式貼在具體組件字段上的,而Struts此類事件是原始的一種表單提交Submit觸發(fā)機(jī)制。假如說前者比較語言化(編程語言習(xí)慣做法類似Swing編程);后者是屬于WEB化,因為它是來自Html表單,假如你起步是從Perl/php開始,反而輕易接受Struts這種風(fēng)格。

  基本配置

  Struts和JSF都是一種框架,JSF必須需要兩種包JSF核心包、JSTL包(標(biāo)簽庫),此外,JSF還將使用到Apache項目的一些commons包,這些Apache包只要部署在你的服務(wù)器中既可。

  JSF包下載地址:http://java.sun.com/j2ee/javaserverfaces/download.html選擇其中Reference Implementation。

  JSTL包下載在http://jakarta.apache.org/site/downloads/downloads_taglibs-standard.cgi

  所以,從JSF的驅(qū)動包組成看,其開源基因也占據(jù)很大的比重,JSF是一個SUN伙伴們工業(yè)標(biāo)準(zhǔn)和開源之間的一個混血兒。



發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 库尔勒市| 石林| 霸州市| 收藏| 盖州市| 绵阳市| 芜湖县| 论坛| 通州区| 德庆县| 淳安县| 尚义县| 博爱县| 上林县| 扎兰屯市| 伊通| 海口市| 繁昌县| 舟曲县| 平塘县| 郓城县| 台北县| 民县| 吉木萨尔县| 彭泽县| 抚远县| 策勒县| 健康| 博湖县| 林西县| 太仆寺旗| 靖宇县| 潍坊市| 龙门县| 德清县| 八宿县| 双城市| 莱州市| 平果县| 泾阳县| 巴塘县|