1. <ul id="0c1fb"></ul>

      <noscript id="0c1fb"><video id="0c1fb"></video></noscript>
      <noscript id="0c1fb"><listing id="0c1fb"><thead id="0c1fb"></thead></listing></noscript>

      99热在线精品一区二区三区_国产伦精品一区二区三区女破破_亚洲一区二区三区无码_精品国产欧美日韩另类一区

      RELATEED CONSULTING
      相關(guān)咨詢
      選擇下列產(chǎn)品馬上在線溝通
      服務(wù)時間:8:30-17:00
      你可能遇到了下面的問題
      關(guān)閉右側(cè)工具欄

      新聞中心

      這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
      Struts2的OGNL標(biāo)簽詳解-創(chuàng)新互聯(lián)

      一、Struts2可以將所有標(biāo)簽分成3類:

      專注于為中小企業(yè)提供成都網(wǎng)站設(shè)計、成都網(wǎng)站建設(shè)、外貿(mào)網(wǎng)站建設(shè)服務(wù),電腦端+手機(jī)端+微信端的三站合一,更高效的管理,為中小企業(yè)北碚免費(fèi)做網(wǎng)站提供優(yōu)質(zhì)的服務(wù)。我們立足成都,凝聚了一批互聯(lián)網(wǎng)行業(yè)人才,有力地推動了1000+企業(yè)的穩(wěn)健成長,幫助中小企業(yè)通過網(wǎng)站建設(shè)實現(xiàn)規(guī)模擴(kuò)充和轉(zhuǎn)變。

      UI標(biāo)簽:主要用于生成HTML元素的標(biāo)簽。

      非UI標(biāo)簽:主要用于數(shù)據(jù)庫訪問,邏輯控制等標(biāo)簽。

      Ajax標(biāo)簽:用于Ajax支持的標(biāo)簽。

      對于UI標(biāo)簽,則有可以分為兩類:

      表當(dāng)標(biāo)簽:表單標(biāo)簽主要用與生成HTML頁面的from元素,以及普通表單元素的標(biāo)簽。

      非表單標(biāo)簽:非表單標(biāo)簽主要用于生成頁面的樹、Tab頁等。

      流程控制標(biāo)簽:主要包含用于實現(xiàn)分頁、循環(huán)等流程的標(biāo)簽。

      數(shù)據(jù)訪問標(biāo)簽:主要包含用于輸出ValueStack中的值,完成國際化等功能的標(biāo)簽。

      Struts2標(biāo)簽庫分類圖:

      Struts2的OGNL標(biāo)簽詳解

      二、使用Struts2標(biāo)簽庫的準(zhǔn)備:

      1、  在Web.Xml文件中增加標(biāo)簽庫d定義。(如果應(yīng)用使用的是Servlet2.3以前)

      2、 現(xiàn)在jsp中使用taglib編輯指令導(dǎo)入標(biāo)簽庫,然后才可以使用標(biāo)簽。

      三、Struts2的OGNL標(biāo)簽:

      OGNL是Object Graphic Navigation Language的縮寫,它是一個開源項目。Struts2框架使用OGNL作為默認(rèn)的表達(dá)式語言。

      在傳統(tǒng)的OGNL表達(dá)式求值中,系統(tǒng)會假設(shè)系統(tǒng)只要一個根對象,但Struts2的Stack Context需要多個“根”對象,其中ValueStacke只是多個“根”對象的其中之一。

      假設(shè):使用標(biāo)簽OGNL表達(dá)式求值,不是用Struts2的OGNL表達(dá)式是求之。如果系統(tǒng)的Context中包含兩個對象:foo對象,它在Context中的名字為foo;bar對象, 并且它在Context中的名為bar。將foo對象設(shè)置成Context的根對象。

      返回foo.getBlah()方法的返回值#foo.blah

      返回bar.getBlah()方法的返回值#bar.blah

      可以看出ONGL表達(dá)式的語法非正常簡潔。

      Struts2不知根據(jù)表達(dá)式從ValueStack中取的對象,還可以直接從對象中獲取屬性。Struts2提供了一個特殊的OGNL ProperAccessories(屬性訪問器),它可以自動搜尋棧內(nèi)的所有實體(從上到下),直接找到求值表達(dá)式匹配的屬性。

      Struts2使用標(biāo)準(zhǔn)的Context來進(jìn)行OGNL表達(dá)式求值,OGNl處理的頂級對象是一個Context,這個Context對象就是一個Map類型實例,在該OGNL的Context中,有一個對象,這個根對象就是OGNL ValueStack,如果需要訪問ValueStack里的屬性,例如:#取出Valuestack中的bar屬性:${bar};

      除此之外:Struts2還提供了一些命名對象,這些命名對象與根對象無關(guān),它們只是存在于Stack Context中。所以,訪問這些對象實現(xiàn)需要使用#前綴來指明。

      1、paramenters對象:用于訪問HTTP請求參數(shù),

      2、request對象:用于訪問HttpServletRequset的屬性(Attribute)的Map。例如#request.userName

      3、Session對象:用于訪問HttpSession的屬性。例如#session.userName

      4、Application對象:用于訪問ServletContext的屬性。例如#application.userName

      5、Attr對象:如果可以訪問到,則訪問PageContext,否則將依次搜索HttpServletRequset,HttpSession,ServletContext中的屬性。

      值得注意的是:當(dāng)系統(tǒng)創(chuàng)建Action實例后,該Action實例已經(jīng)被保存到ValueStack中,故無需書寫#即可訪問Action屬性。

      OGNL中的集合(List/Map):

      直接生成一個List類型的集合,該List對象中包含三個元素,都個元素之間以英文逗號隔開;

      例:

      直接生成一個Map類型的集合,該Map對象中每個Key-value對象之間以英文冒號隔開:多項之間以英文逗號隔開。

      例:

      Set標(biāo)簽用于蔣某個值放入指定范圍:

      Scope:指定變量被放置的范圍,該屬性可以接受aplication、session、requset、page、action。如果該屬性,則默認(rèn)在OGNL Context中。

      Value:賦給變量的值,如果沒有設(shè)置該屬性,則將ValueStack棧頂?shù)闹蹈督o變量。

      對于集合,OGNL提供了兩個與元素:in和not in,其中in判斷某個元素是否在指定集合中;not in則用于判斷某個元素是否不在指定集合中。 in表達(dá)式:        在          不在     not in表達(dá)式:       不在         在 

      OGNL還允許通過某個規(guī)則取得集合的自己,取得集合子集有三個操作符:

      1、?:取出所有符合選擇邏輯的元素

      2、^:取出符合集合邏輯的第一個元素

      3、$:取出符合選擇邏輯的最后一個元素

      例: 35}">       - $

      在上面代碼中,直接在集合后緊跟.{}運(yùn)算符表明用于取出該集合的子集,{}內(nèi)的表達(dá)式用于獲取符合集合的元素,this指的是為了從大集books刷選數(shù)據(jù)到小集合,需要對大集合books進(jìn)行迭代,this代表當(dāng)前迭代的元素。表達(dá)式用于獲取集合中價格大于35的書的集合。

      (一)、控制標(biāo)簽:

      Struts2的非UI標(biāo)簽包括控制標(biāo)簽和數(shù)據(jù)標(biāo)簽,主要用于完成流程控制,以及對ValueStack的控制,數(shù)據(jù)標(biāo)簽主要用于訪問ValueStack中的數(shù)據(jù);控制標(biāo)簽可以完成輸出流程控制,例如分支,循環(huán)等操作,也可以對集合的合并,排列。

      控制標(biāo)簽有:

      1、if:用于控制選擇器輸出的標(biāo)簽;

      2、else if: 與if標(biāo)簽結(jié)合使用,用于控制選擇輸出的標(biāo)簽;

      3、else:與if標(biāo)簽結(jié)合使用,用于控制選擇輸出的標(biāo)簽;

      4、append:將多個集合拼接成一個新的集合;

      5、generator:字符解析器,用于將一個字符串解析成一個集合;

      6、Iterator:這是一個迭代器,用于將集合迭代輸出;

      7、merge:用于多個集合拼接陳一個新的集合。但與appernd的拼接方式有所不同。

      8、sort:用于對集合進(jìn)行排序;

      9、Subset:截取集合的部分元素,形成新的子集;

      If/elseif/else這三個標(biāo)簽都是用于進(jìn)行分支控制的,他們都是用于根據(jù)一個Boolean表達(dá)式的值,來確定是否計算、輸出標(biāo)簽體的內(nèi)容。

      例:

      23 21 都不等

      iterator標(biāo)簽:

       用于對集合進(jìn)行迭代,這里集合包含List、Set和數(shù)組,也可對Map類型的對象進(jìn)行迭代輸出。Value、id、Status三個屬性都是可選屬性,如果沒有指定value屬性,則使用ValueStack棧頂?shù)募稀?/p>

      例:

          

          

       

      如果為標(biāo)簽指定status屬性,即每次迭代時都會有一個IteratorStatus實例,該實例的方法包含如下幾個:

      Int getCount():返回當(dāng)前迭代了幾個元素;

      Int getIndex():返回當(dāng)前元素的索引;

      Boolean isEven(): 當(dāng)前元素的索引是否是偶數(shù);

      Boolean isFirst():當(dāng)前元素是否是第一個元素;

      Boolean isLast():當(dāng)前元素是否是最后一個元素;

      Boolean isOdd():當(dāng)前元素的索引是否是奇數(shù);

      append標(biāo)簽:

      用于將多個集合拼接起來,組成一個新的集合,通過陣中的拼接,從而允許通過一個標(biāo)簽就完成對多個集合的迭代。

      merge標(biāo)簽的用法看起來很像append標(biāo)簽,也是用于將多個集合拼接成一個集合但是采用的拼接方式與append不同,append是以集合位順序的拼接,merge是以元素位順序拼接;

      generator標(biāo)簽:指定字符串按指定分隔符分隔成多個子串,臨時生成多個子串可以使用iterator標(biāo)簽來迭代輸出。可以理解我generator將一個字符串轉(zhuǎn)化成一個集合,在該標(biāo)簽的標(biāo)簽體內(nèi),整個臨時生成的集合將位于Valuestack的頂端,但一旦該標(biāo)簽結(jié)束,該集合將被移除Valuestack。

      屬性有count:指定生成集合中元素的總數(shù),separator:指定用于解析字符串的分隔符;val:指定被解析的字符串;converter:制定一個轉(zhuǎn)化器,該轉(zhuǎn)化器負(fù)責(zé)將集合中的每個字符串轉(zhuǎn)化成對象;id:可選屬性,制定了該屬性,則將生成的集合放在pageContext屬性中;

      Subset標(biāo)簽:用于取得集合的子集,該標(biāo)簽的底層通過org.apache.Struts2.util.Subset.IteratorFilter類提供實現(xiàn)。屬性有:

      count:指定生成集合中元素的總數(shù),如果不指定該屬性,默認(rèn)取得源集合的全部元素。還有source,start,decider屬性;

      subset標(biāo)簽生成的子集放在ValueStack的棧頂,如果該標(biāo)簽結(jié)束后,該標(biāo)簽生成的子集將被移除出ValueStack棧。

      Sort標(biāo)簽指定集合元素進(jìn)行排序,進(jìn)行排序是=時,必須提供自己的排序規(guī)則,即使實現(xiàn)自己的Comparator,自己的Comparator需要實現(xiàn)java.util.Comparator接口。屬性有:

      Comparator:該屬性指定進(jìn)行排序的Comparator實例。source:該屬性指定排序的集合。如果不指定該屬性,則對ValueStack棧頂?shù)募线M(jìn)行排序。

      (二)、數(shù)據(jù)標(biāo)簽:

      數(shù)據(jù)標(biāo)簽主要用于提供各種數(shù)據(jù)范文相關(guān)的功能,包含顯示一個Action里的屬性,以及生成國際化輸出等功能,

      數(shù)據(jù)標(biāo)簽主要包含:action,bean,date,debug,i18n,include,param,push,set,text,url,property;

      1、 action:用于直接在JSP頁面直接調(diào)用一個Action,通過指定executeResult參數(shù),還可以將該Action的處理結(jié)果包含到本頁面中來。如果指定了executeResult參數(shù)的屬性值為true,該標(biāo)簽還會把Action的處理結(jié)果包含到本頁面中來。屬性有:

      i. id:該屬性會作為該Action的應(yīng)用ID

      ii. name:指定該標(biāo)簽調(diào)用哪個Action

      iii. nameSpace:指定該標(biāo)簽調(diào)用的Action所在的namespace

      iv. executeResult:該是屬性指定是否要將action 的處理結(jié)果頁面包含到本頁面。默認(rèn)值為false,即不包含。

      v. ignoreContextParams:指定該頁面中的參數(shù)是否需要轉(zhuǎn)入調(diào)用Action,該參數(shù)的默認(rèn)值是false,即將本頁面的請求參數(shù)傳入被調(diào)用的Action。

      2、bean:用于創(chuàng)建一個JavaBEan實例,如果指定id屬性,則可以將創(chuàng)建的JavaBean實例放入Stack Context中。屬性有name:指定要實例化的JavaBean的實現(xiàn)類;id:該屬性是個可選屬性,指定該屬性后該實例JavaBean實例會被放入到Stack Context中(并不是ValueStack) ,從而允許直接通過該id屬性來訪問該JavaBean實例;

      3、date:用于格式化輸出一個日期。屬性有:format:根據(jù)該屬性指定的格式來個事化日期;nice:該屬性只能為true或false,它用于指定是否輸出指定日期和當(dāng)前時刻之間的時差;name指定要格式化的日期值;id:制定引用該元素的id值。

      4、debug:主要用于輔助調(diào)試,在頁面上生成一個調(diào)試鏈接,通過該鏈接到ValueStack和Stack Context中的所有的值信息;

      例:

      5、i18n:用于制定國際化資源的文件的baseName

      6、include:用于JSP頁面中包含其他的JSP或Servlet資源,屬性有value:指定需要被包含的JSP頁面或者Servlet;id指定該標(biāo)簽的ID引用

      例:

      7、param:通常用作bean標(biāo)簽,url標(biāo)簽的子標(biāo)簽,屬性有name:指定需要設(shè)置參數(shù)的參數(shù)名;value:指定需要設(shè)置參數(shù)的參數(shù)值;id:指定引用該元素的ID

      例:blue

      8、push:用于將某個值放到ValueStack的棧頂。屬性有:value:該屬性指定需要放到ValueStack棧頂?shù)闹担籭d:指定引用該元素的ID

      例:


      9、set:用于設(shè)置一個新變量,并可以將新變量放入到指定的范圍內(nèi),屬性有name:重新生成的新變量的名字;scope:可選屬性,指定新變量被放置的范圍,屬性值有application、session、requset、page、action,沒有指定屬性,則默認(rèn)為放置到Stack Context中;value:指定將賦值給變量的值,如果沒有制定該屬性,則將ValueStack棧頂?shù)闹Ц督o行變量;id:指定該元素的引用ID;

      例:

      10、text:用于輸出國際化消息

      11、url:用于生一個URL地址,屬性有:includeParams該屬性指定包含的參數(shù),屬性值只能為none,get,all;scheme用于設(shè)置scheme屬性;value指定生成URL的地址值,如果value不提供就有action屬性指定的Action作為URL地址;action指定生成URL的地址為那個Action,如果不提供,就用valuezuoweiURL的地址值;namespace;

      method;encode指定是否需要encode指定是否需要encode請求屬性;includeContext指定是否需要將上下文包含在URL地址中;anchor指定URL的錨點(diǎn);id;

      12、property:用于生成輸出某個值,包括輸出ValueStack,Stack,Context和Action Context中得值。屬性有default如果需要輸出的屬性值為null,則顯示的default屬性指定的值;espcape指定是否escape HTML代碼;value 到指定需要輸出的屬性值,如果沒有指定該屬性,則默認(rèn)輸出ValueStack棧頂?shù)闹担籭d指定該元素的標(biāo)識;

      (三)、表單標(biāo)簽

      Struts2的表單標(biāo)簽,可分為兩種:form表單本身和單個表單元素的標(biāo)簽。Form標(biāo)簽本身的行為不同于表單元素的標(biāo)簽。Struts2的表單元素標(biāo)簽都包含了非常多的屬性,但有很多屬性完全是通用的。

      1)、 表單標(biāo)簽的通用屬性

      所有表單標(biāo)簽處理類都繼承了UIBean類,UIBean包含了一些通用屬性,分為3種:

      1、 模板相關(guān)屬性

      2、 JavaScript相關(guān)屬性

      3、 通用屬性

      除此之外,所有表單元素標(biāo)簽都存在一個特殊屬性:form,通過該屬性可以實現(xiàn)表單元素和表單之間的交互。例如,我們可以通過${parameters.form.id}來取得表單元素所在表單的ID。下面是表單標(biāo)簽的通用屬性。

      模板相關(guān)的通用屬性如下:

      1、 templateDir:指定該表單所用的模板文件目錄。

      2、 theme:指定該表單所用的主題

      3、 template:指定該表單所用的模板

      JavaScript相關(guān)的通用屬性如下:

      1、 onclick:指定鼠標(biāo)在該標(biāo)簽生成的表單元素上單擊時觸發(fā)的JavaScript函數(shù)。

      2、 ondbclick:指定鼠標(biāo)在該標(biāo)簽生成的表單元素上雙擊時觸發(fā)的JavaScript函數(shù)。

      3、 onmousedown:指定鼠標(biāo)在該標(biāo)簽生成的表單元素上按下時觸發(fā)的JavaScript函數(shù)。

      4、 onmouseup:指定鼠標(biāo)在該標(biāo)簽生成的表單元素上松開時觸發(fā)的JavaScript函數(shù)。

      5、 onmouseover:指定鼠標(biāo)在該標(biāo)簽生成的表單元素上懸停時觸發(fā)的JavaScript函數(shù)。

      6、 onmouseout:指定鼠標(biāo)移除該標(biāo)簽生成的表單元素時觸發(fā)的函數(shù)。

      7、 onfocus:指定該標(biāo)簽生成的表單元素得到焦點(diǎn)時觸發(fā)的函數(shù)。

      8、 onblur:指定該標(biāo)簽生成的表單元素失去焦點(diǎn)時觸發(fā)的函數(shù)。

      9、 onkeypress:指定單擊鍵盤上某個鍵時觸發(fā)的函數(shù)。

      10、onkeyup:指定松開鍵盤上某個鍵時觸發(fā)的函數(shù)。

      11、onkeydown:指定按下鍵盤上某個鍵時觸發(fā)的函數(shù)。

      12、onselect:對下拉列表項等可以選擇表單的元素,指定選中該元素時觸發(fā)的JavaScript函數(shù)。

      13、 onchange:對于文本框等可以接受輸入的表單元素,指定當(dāng)值改變時觸發(fā)的javaScript函數(shù)。

      因為Html本身的限制,并不是每個Html元素都可以觸發(fā)以上的所有函數(shù)。因此,上面的屬性并不是對Struts2 的每個標(biāo)簽都有效。

      Struts2還允許為表單元素設(shè)置提示,單鼠標(biāo)在這些元素上停懸時,系統(tǒng)將出現(xiàn)提示。Struts2將這種特性稱為Tooltip。相關(guān)的通用屬性如下:

      1、 tooltip:設(shè)置此組件的Tooltip。

      2、 tooltipIcon:設(shè)置Tooltip圖標(biāo)的URL路徑。

      3、 tooltipAboveMousePointer:是否在光標(biāo)位置上顯示Toopltip。也可以通過設(shè)置tooltipOffseY屬性,設(shè)置Tooltip與光標(biāo)位置的垂直位移。

      4、 tooltipBgColor:設(shè)置Tooltip的背景色。

      5、 tooltipBgImg:設(shè)置Tooltip的背景圖片。

      6、 tooltipBorderWidth:設(shè)置Tooltip邊框的寬度

      2)、 表單標(biāo)簽的name和value屬性

      Name和value屬性之間存在一個獨(dú)特的關(guān)系:因為表單元素的name屬性會映射到Action的屬性當(dāng)對應(yīng)的Action已經(jīng)被實例化,且對應(yīng)屬性有值時,表單元素會顯示出該屬性的值,該值就是表單元素的value值。

      3)、 checkboxlist標(biāo)簽

      checkboxlist標(biāo)簽可以一次創(chuàng)建多個復(fù)選框,要根據(jù)list屬性指定的集合。還有兩個常用的屬性。

      1、 listKey:該屬性指定集合元素中的某個屬性作為復(fù)選框的value值

      2、 listValue:該屬性指定集合元素中的某個屬性作為復(fù)選框的標(biāo)簽。

      4)、 doubleselect標(biāo)簽

      doubleselect標(biāo)簽會生成一個級聯(lián)列表框(會生成兩個下拉列表框),當(dāng)選第一個列表框時,第二個的內(nèi)容也會隨之改變。常用屬性如下:

      1、 list:指定用于輸出第一個下拉列表框中選項的集合

      2、 listKey:該屬性指定集合元素中的某個屬性作為復(fù)選框的value值

      3、 listValue:該屬性指定集合元素中的某個屬性作為復(fù)選框的標(biāo)簽。

      4、 doubleList:指定用于輸出的第一個下拉列表框中選項的集合

      5、 doubleList key:該屬性指定集合元素中的某個屬性作為復(fù)選框的value值

      6、 doubleList Value:該屬性指定集合元素中的某個屬性作為復(fù)選框的標(biāo)簽。

      7、 doubleName:指定第二個下拉列表框的name屬性。

      一、 head標(biāo)簽

      二、 optiontransferseselect標(biāo)簽

      三、 select標(biāo)簽

      四、 radio標(biāo)簽

      五、 optgroup標(biāo)簽

      六、 token標(biāo)簽

      七、 updownselect標(biāo)簽

      非表單標(biāo)簽

      一、 actionerror和actionmessage標(biāo)簽

      二、 component標(biāo)簽

      三、 tree和treenode初步

      另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價比高”等特點(diǎn)與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。


      新聞標(biāo)題:Struts2的OGNL標(biāo)簽詳解-創(chuàng)新互聯(lián)
      網(wǎng)頁地址:http://www.ef60e0e.cn/article/dgosog.html
      99热在线精品一区二区三区_国产伦精品一区二区三区女破破_亚洲一区二区三区无码_精品国产欧美日韩另类一区
      1. <ul id="0c1fb"></ul>

        <noscript id="0c1fb"><video id="0c1fb"></video></noscript>
        <noscript id="0c1fb"><listing id="0c1fb"><thead id="0c1fb"></thead></listing></noscript>

        布拖县| 建湖县| 诏安县| 九龙坡区| 阜南县| 东莞市| 大渡口区| 辰溪县| 南华县| 建平县| 凯里市| 姚安县| 浪卡子县| 新邵县| 酒泉市| 昌图县| 绥滨县| 霍城县| 万源市| 永泰县| 文水县| 文山县| 巴林左旗| 龙陵县| 双江| 安康市| 庆城县| 万源市| 普宁市| 镇赉县| 阜平县| 浦东新区| 高陵县| 河东区| 堆龙德庆县| 天水市| 高密市| 邯郸市| 东山县| 屏东市| 雅江县|