亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        Struts2中的OGNL應(yīng)用案例

        2012-04-13 04:58:04
        科技傳播 2012年12期
        關(guān)鍵詞:表達(dá)式視圖框架

        劉 潔

        武漢軟件工程職業(yè)學(xué)院,湖北 武漢 430033

        1 Struts2中的OGNL語言

        Struts是Apache軟件基金會(ASF)贊助的一個開源項目。它最初是Jakarta項目中的一個子項目,并在2004年3月成為ASF的頂級項目。它通過采用Java Servlet/JSP技術(shù),實(shí)現(xiàn)基于JavaEE Web應(yīng)用的MVC設(shè)計模式的應(yīng)用框架,是MVC經(jīng)典設(shè)計模式中的一個經(jīng)典產(chǎn)品。

        但隨著Struts設(shè)計上的缺陷,使它越來越無法滿足開發(fā)人員要求高效、靈活的開發(fā)需求,于是WebWork框架進(jìn)入了Struts開發(fā)團(tuán)隊的視線。

        2006年,WebWork與Struts這兩個優(yōu)秀的JavaEE Web框架的團(tuán)體,決定合作共同開發(fā)一個新的框架,整合WebWork與Struts 優(yōu)點(diǎn),并且更加優(yōu)雅、擴(kuò)展性更強(qiáng)的框架,命名為“Struts 2”,原Struts的1.x 版本產(chǎn)品稱為“Struts 1”。

        至此,Struts項目并行提供與維護(hù)兩個主要版本的框架產(chǎn)品——Struts 1 與 Struts 2。

        在Struts2中,根據(jù)描述模型、視圖、控制器對應(yīng)關(guān)系的struts.xml 的配置文件轉(zhuǎn)發(fā)視圖的請求,并由一個名為 Action的Java類對視圖請求進(jìn)行處理,調(diào)用響應(yīng)數(shù)據(jù)模型。

        其中,Struts2的一個關(guān)鍵特性就是它可以對Action攜帶的數(shù)據(jù)進(jìn)行讀寫訪問,這是通過表達(dá)式語言(Expression Language,EL)來實(shí)現(xiàn)的。EL通常是用來簡化數(shù)據(jù)的訪問操作,取代Java腳本代碼,提供更清晰的視圖層實(shí)現(xiàn)。對于Struts 2而言,它支持以下幾種表達(dá)式語言:

        1)OGNL:可以方便地操作對象屬性的開源表達(dá)式語言;2)JSTL:JSP 2.0集成的標(biāo)準(zhǔn)的表達(dá)式語言;3)Groovy:基于Java平臺的動態(tài)語言;4)Velocity:嚴(yán)格來說不是表達(dá)式語言,它是一種基于Java的模板匹配引擎。

        其中OGNL是Object-Graph Navigation Language的縮寫,既對象圖導(dǎo)航語言。Struts 2默認(rèn)的表達(dá)式語言,它是一種功能強(qiáng)大的表達(dá)式語言,通過它簡單一致的表達(dá)式語法可以存取對象的任何屬性,調(diào)用對象的方法,遍歷整個對象的結(jié)構(gòu)圖,實(shí)現(xiàn)字段類型轉(zhuǎn)化等功能。

        2 基于OGNL語言的應(yīng)用案例設(shè)計

        這里以基于Java Web的選課系統(tǒng)中的“選課模塊”為例剖析OGNL語言,運(yùn)行效果如圖1所示:

        圖1 “選課模塊”運(yùn)行效果

        2.1 數(shù)據(jù)庫設(shè)計

        首先完成的是數(shù)據(jù)庫設(shè)計,選擇合適的數(shù)據(jù)庫產(chǎn)品,根據(jù)面向?qū)ο蠓治鲈O(shè)計出數(shù)據(jù)庫,數(shù)據(jù)庫中的表如下:

        2.2 包圖設(shè)計

        基于MVC模式及數(shù)據(jù)庫設(shè)計,構(gòu)建出“選課模塊”的組件圖,如圖2所示:

        圖2 “選課模塊”組件圖

        2.3 順序圖設(shè)計

        “選課模塊”中獲取數(shù)據(jù)庫中course表信息顯示在頁面上這個事件流如下圖3所示,其中SelectcourseAction通過調(diào)用CourseDAO對象的SelectCourse()方法獲取Course的List列表,并將其存入值棧中。

        在Struts2中值棧就相當(dāng)于一個“倉庫”,數(shù)據(jù)信息到來時裝入“倉庫”,需要時可以從“倉庫”中取出這些數(shù)據(jù)信息。

        圖3 “選課模塊”順序圖

        以此類推畫出address表、teacher表被讀入到頁面的順序圖及課表數(shù)據(jù)被存入到數(shù)據(jù)庫的順序圖。

        2.4 關(guān)鍵技術(shù)及代碼

        在SelectcourseAction.java中,利用Struts2的action特性,address、courses、teachers三個List對象被存儲在值棧中,代碼如下所示:

        在 main.jsp中,利用OGNL語言將 address、courses、teachers三個List對象中的name屬性值的集合取出,并利用Struts2的UI標(biāo)簽將其顯示在下拉列表中,下拉列表中的name屬性分別定義為curriculum.courseName、curriculum.courseAddress、curriculum.courseTeacher、curriculum.courseTime,代表Curriculum對象(curriculum)的四個屬性值。

        在InsertcurriculumAction.java中利用Struts2的Domain Model方法將main.jsp傳遞過來的參數(shù)值保存在curriculum對象中,以便調(diào)用CurriculumDAO對象的courseInsert(curriculum)方法將其選課數(shù)據(jù)存入數(shù)據(jù)庫中。

        在Struts 2框架中,任何Action所涉及到的數(shù)據(jù)都要被存入Action上下文,同時也會在值棧中創(chuàng)建一個這些數(shù)據(jù)信息的副本。因此有效利用OGNL語言從值棧“倉庫”中存取數(shù)據(jù)顯得尤為重要。

        [1]孫衛(wèi)琴.Tomcat與Java Web開發(fā)技術(shù)詳解.電子工業(yè)出版社,2005,8.

        [2]孫鑫.Struts2深入詳解.電子工業(yè)出版社,2008,7.

        [3]陳沉.研磨Struts2.清華大學(xué)出版社,2011,10.

        猜你喜歡
        表達(dá)式視圖框架
        框架
        廣義框架的不相交性
        一個混合核Hilbert型積分不等式及其算子范數(shù)表達(dá)式
        表達(dá)式轉(zhuǎn)換及求值探析
        淺析C語言運(yùn)算符及表達(dá)式的教學(xué)誤區(qū)
        5.3 視圖與投影
        視圖
        Y—20重型運(yùn)輸機(jī)多視圖
        SA2型76毫米車載高炮多視圖
        WTO框架下
        法大研究生(2017年1期)2017-04-10 08:55:06
        午夜免费观看日韩一级视频| 乱中年女人伦av三区| 久久久久亚洲AV片无码乐播 | 91成人自拍视频网站| 99久久久人妻熟妇精品一区二区| 性做久久久久久免费观看| 亚洲色欲久久久综合网| 天天狠天天透天干天天| 精品视频一区二区杨幂| 91偷拍与自偷拍亚洲精品86| 无套中出丰满人妻无码| 久久国产热这里只有精品| 亚洲狼人社区av在线观看| 蜜桃精品国产一区二区三区| 水蜜桃精品视频在线观看| 日韩精品久久久久久免费| 亚洲精品久久无码av片软件| 国产午夜精品久久久久九九| 暴露的熟女好爽好爽好爽| 国产日产欧产精品精品蜜芽| 狠狠做深爱婷婷久久综合一区| 亚洲中文字幕无码久久2018| 福利视频自拍偷拍视频| 国产精品对白一区二区三区| 国产丶欧美丶日本不卡视频| 欧美老妇人与禽交| 久久午夜伦鲁鲁片免费| 久久这里都是精品99| 国产av一区二区精品凹凸| 国产肉体ⅹxxx137大胆| 超级少妇一区二区三区| 国产一级一区二区三区在线播放| 亚洲国产精彩中文乱码av| 全免费a级毛片| 国产午夜av一区二区三区| 国产一区二区三区青青草| 久久亚洲欧美国产精品| 四虎影视永久在线精品| 97人妻蜜臀中文字幕| 日本久久精品中文字幕| 久久精品黄aa片一区二区三区|