• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

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

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

      劉 潔

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

      1 Struts2中的OGNL語言

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

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

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

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

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

      其中,Struts2的一個(gè)關(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平臺的動(dòng)態(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)用對象的方法,遍歷整個(gè)對象的結(jié)構(gòu)圖,實(shí)現(xiàn)字段類型轉(zhuǎn)化等功能。

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

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

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

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

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

      2.2 包圖設(shè)計(jì)

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

      圖2 “選課模塊”組件圖

      2.3 順序圖設(shè)計(jì)

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

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

      圖3 “選課模塊”順序圖

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

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

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

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

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

      在Struts 2框架中,任何Action所涉及到的數(shù)據(jù)都要被存入Action上下文,同時(shí)也會(huì)在值棧中創(chuàng)建一個(gè)這些數(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á)式視圖框架
      框架
      廣義框架的不相交性
      一個(gè)混合核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
      比如县| 邓州市| 镇安县| 五常市| 察隅县| 三门峡市| 新建县| 岢岚县| 陇南市| 武平县| 陇西县| 蒙城县| 桂东县| 常山县| 大名县| 平舆县| 双鸭山市| 沙河市| 鄱阳县| 墨竹工卡县| 清远市| 河东区| 江陵县| 比如县| 柳江县| 桑日县| 玉田县| 靖安县| 大埔县| 邻水| 汾西县| 思南县| 曲阳县| 怀来县| 阳朔县| 闻喜县| 鸡泽县| 弋阳县| 陈巴尔虎旗| 晋州市| 桐城市|