欧美三区_成人在线免费观看视频_欧美极品少妇xxxxⅹ免费视频_a级毛片免费播放_鲁一鲁中文字幕久久_亚洲一级特黄

Struts2講義27

系統(tǒng) 1919 0

6 ? Struts2 JSP 視圖技術(shù)

在之前的章節(jié)中,筆者的代碼示例都是用 JSP 來實(shí)現(xiàn)的。其實(shí) Struts2 不僅僅支持 JSP 這一種視圖技術(shù)。作為 MVC 架構(gòu)中 view 層技術(shù), velocity FreeMarker 視圖技術(shù)也是很優(yōu)秀的,近年來很多 Web 系統(tǒng)項(xiàng)目的架構(gòu)師和開發(fā)者都開始放棄使用 JSP 作為 view 層顯示技術(shù)轉(zhuǎn)向使用 velocity FreeMarker 。因此筆者覺得有必要介紹 Struts2 框架是如何支持這兩種視圖技術(shù)的。希望本章能讓讀者作為“敲門磚”,敲開這兩種視圖技術(shù)的學(xué)習(xí)“大門”。

6.1 ? velocity 視圖技術(shù)使用介紹

velocity 翻譯成中文就是“速度”的意思,它的縮寫“ v ”就是物理學(xué)中代表速度的符號(hào)。由它的名字可以想象出它的設(shè)計(jì)者對(duì)它有什么期望吧。畢竟有時(shí)候使用 JSP 來實(shí)現(xiàn) view 層對(duì)于開發(fā)者來說是件很麻煩又費(fèi)時(shí)的事情。 velocity 就是為開發(fā)者節(jié)約大量 view 層開發(fā)時(shí)間而準(zhǔn)備的視圖技術(shù)。它使用模板文件來顯示視圖界面。除了它自身的書寫格式外,模板文件中其他代碼就是普通的 html 代碼。因此它也是實(shí)現(xiàn)松耦合,讓美工和開發(fā)人員各司其職進(jìn)行 view 層開發(fā)。下面通過示例來介紹它在 Struts2 中的使用方式。

技術(shù)要點(diǎn)

本節(jié)代碼說明 velocity Struts2 中使用方式。

velocity 基本語義和書寫格式說明。

模板文件 vm 介紹

Struts2 中如何使用 velocity

演示代碼

顯示數(shù)據(jù)的 vm 模板文件代碼:

Java代碼 復(fù)制代碼
  1. <!---------------文件名:?show.vm---------> ??
  2. <html> ??
  3. ????<head> ??
  4. ????<title>Velocity使用范例</title> ??
  5. ????<meta?http-equiv= "content-type" ?content= "text/html;?charset=GB2312" /> ??
  6. ????</head> ??
  7. ?????<body> ??
  8. ???????<h3?align= "left" > ??
  9. ????????????Velocity使用范例 ??
  10. ????????</h3> ??
  11. ???????<h1>裝修材料信息列表</h1> ??
  12. ?<table?border> ??
  13. ????????<tr?align= "center" > ??
  14. ??????????<td>材料名</td> ??
  15. ??????????<td>材料價(jià)格(單位:元)</td> ??
  16. ??????????<td>材料庫存量(單位:個(gè))</td> ??
  17. ????????</tr> ??
  18. ????????#foreach($Material?in?$mList) ??
  19. ??????????????<tr?align= "center" > ??
  20. ??????????????????<td>$Material.material</td> ??
  21. ??????????????????<td>$Material.bid</td> ??
  22. ??????????????????<td>$Material.mount</td> ??
  23. ?????????????</tr> ??
  24. ???????#end ??
  25. ???????</table> ??
  26. ????</body> ??
  27. </html>??
    <!---------------文件名: show.vm--------->
<html>
    <head>
    <title>Velocity使用范例</title>
    <meta http-equiv="content-type" content="text/html; charset=GB2312"/>
    </head>
     <body>
       <h3 align="left">
            Velocity使用范例
        </h3>
       <h1>裝修材料信息列表</h1>
 <table border>
        <tr align="center">
          <td>材料名</td>
          <td>材料價(jià)格(單位:元)</td>
          <td>材料庫存量(單位:個(gè))</td>
        </tr>
        #foreach($Material in $mList)
              <tr align="center">
                  <td>$Material.material</td>
                  <td>$Material.bid</td>
                  <td>$Material.mount</td>
             </tr>
       #end
       </table>
    </body>
</html>
  

?

Struts2 的使用 velocity Action 代碼:

Java代碼 復(fù)制代碼
  1. <!----------文件名:VelocityAction.java-------> ??
  2. public ? class ?VelocityAction? extends ?ActionSupport{ ??
  3. ????????? private ?List?mList; ??
  4. ……… ??
  5. ????????? public ?String?execute()? throws ?Exception{ ??
  6. ???????????????????mList?=? new ?ArrayList(); ??
  7. ??????????????????? for ( int ?i= 0 ;i< 4 ;i++){ ??
  8. ????????????????????????????Material?m?=? new ?Material(); ??
  9. ????????????????????????????m.setMaterial( "材料" +(i+ 1 )); ??
  10. ????????????????????????????m.setMount( 10 *(i+ 1 )); ??
  11. ????????????????????????????m.setBid( 1.0 +(i+ 1 )); ??
  12. ????????????????????????????mList.add(m);???????????????????? ??
  13. ???????????????????} ??
  14. ??????????????? return ?SUCCESS;????????????? ??
  15. ?????????} ??
  16. }??
    <!----------文件名:VelocityAction.java------->
public class VelocityAction extends ActionSupport{
         private List mList;
………
         public String execute() throws Exception{
                   mList = new ArrayList();
                   for(int i=0;i<4;i++){
                            Material m = new Material();
                            m.setMaterial("材料"+(i+1));
                            m.setMount(10*(i+1));
                            m.setBid(1.0+(i+1));
                            mList.add(m);                    
                   }
               return SUCCESS;             
         }
}
  

?

配置文件對(duì) Action 的配置內(nèi)容:

Java代碼 復(fù)制代碼
  1. <!--------------文件名:struts.xml-------------> ??
  2. ……… ??
  3. < package ?name= "C06.1" ? extends = "struts-default" > ??
  4. ???????????????????<action?name= "velocity" ??
  5. ???????????????????????????? class = "action.VelocityAction" > ??
  6. ????????????????????????????<result?name= "success" ?type= "velocity" >/velocity/show.vm</result> ??
  7. ???????????????????</action> ??
  8. </ package >??
    <!--------------文件名:struts.xml------------->
………
<package name="C06.1" extends="struts-default">
                   <action name="velocity"
                            class="action.VelocityAction">
                            <result name="success" type="velocity">/velocity/show.vm</result>
                   </action>
</package>
  

?

對(duì)支持中文字符的字符編碼集設(shè)置:

Java代碼 復(fù)制代碼
  1. <!---------------文件名:struts.properties-------> ??
  2. #支持本地化的資源文件名定義 ??
  3. struts.i18n.encoding=gb2312??
    <!---------------文件名:struts.properties------->
#支持本地化的資源文件名定義
struts.i18n.encoding=gb2312
  

?

示例效果顯示如圖 6.1

Struts2講義27

?

6.1 ? velocity 顯示效果圖

代碼解釋

1 )本節(jié)示例是將一些裝修材料用 list 形式顯示在頁面上。如之前筆者講述的實(shí)例完全可以由 JSP 來完成。而該示例是使用 velocity 技術(shù)來實(shí)現(xiàn)。讀者也可以將其理解為一種和 JavaScript 相同的腳本語言。它的語義和語法中有以下幾個(gè)注意點(diǎn)。

# ”標(biāo)識(shí):該標(biāo)識(shí)用來表明 velocity 中的控制語句。比如“ #if ”、“ #foreach ”等,都是用來控制流程轉(zhuǎn)向的。

$ ”標(biāo)識(shí):該標(biāo)識(shí)來表示對(duì)象或變量。比如示例中的“ $Material ”。如果這些對(duì)象還有自己的屬性,則可以在其后面再加“ . , 如示例中的“ $Material .material ”。

{} ”標(biāo)識(shí):該標(biāo)識(shí)用來為某對(duì)象或變量賦具體的值。比如“ {frank}

“!”標(biāo)識(shí):假設(shè)某變量值為 null 或者還沒被定義。則在該變量前加上“!”,這樣在頁面上調(diào)用該變量之處一律顯示為空白即“ ”。

# ”標(biāo)識(shí): velocity 語言的注釋標(biāo)識(shí)。

2 velocity 模板文件后綴名都是“ vm ”結(jié)尾。該類型文件中除了可以書寫 velocity 自己的語言代碼之外,也可以使用 HTMl 語言的標(biāo)簽。在本示例中查看 show.vm 文件就可以知道它和 JSP 文件還是很相像的。而且 Struts2 的標(biāo)簽也可以在 vm 文件中使用, 只需要在原有標(biāo)簽前加“ #s ”就可以了,參數(shù)之間使用 “” 分隔。如果讀者需要在 vm 文件中引入其他文件,這些被引入文件是 JSP 或者 vm 類型的話,將會(huì)顯示文件中的定義的各種動(dòng)態(tài)數(shù)據(jù)。如果是其他類型的文件被引入的話,只是顯示這些文件的文本即靜態(tài)引入。一般是使用“ #inclue (“文件名”)”格式進(jìn)行 引入。如果需要引入多個(gè)文件則在“()”中以“,”相隔。還有個(gè)引入文件的書寫代碼格式是“ #parse ”,這個(gè)只能引入 vm 類型文件,而且只能引入一個(gè)。不過這樣引入也有一個(gè)好處,那就是被引入 vm 文件中不僅可以使用它自己定義的變量也可以使用引入它的 vm 文件中的變量。這樣引入文件和被引入文件關(guān)系有點(diǎn)像 JAVA 中父類和子類關(guān)系。還有如果想讓界面中顯示 velocity 中這些標(biāo)識(shí),而不被 velocity 解析,那可以在它們前面加上“ \ ”。比如想顯示“ $ ”,則可以寫成“ \$ ”,這樣在“ $ ”后面的內(nèi)容, velocity 不會(huì)將其解析成 velocity 的變量而只是普通文本。

另外需要注意的時(shí)候, velocity 只會(huì)按照 gettXXX() 解析變量,例如 Material.material 實(shí)際上找到的 Material.getMaterial() 方法,讀者可以試著在 Action 寫一個(gè)變量而不使用 getXXX() 方法,看看會(huì)不會(huì)在 vm 中取到值,答案是變量照樣會(huì)被輸出。

3 )在 Struts2 中使用 velocity 技術(shù),首先要在項(xiàng)目中導(dǎo)入 velocity jar 包,具體 jar 包名請(qǐng)讀者參考項(xiàng)目示例。在該示例中 Action 無需過多說明。值得說的是 struts.xml 文件,比如在示例代碼中筆者用黑體注明了 result 的返回類型必須是“ velocity ”,這樣才可以調(diào)用 vm 模板文件。然后就可以像使用 JSP 一樣使用 vm 文件顯示 Action 的定義的材料 list 數(shù)據(jù)。

注意:由于 velocity 缺省顯示中文字符用的字符編碼集合是“ ISO-88591 ”。如果開發(fā)中使用的項(xiàng)目字符編碼集合不是“ ISO-88591 ”,則需要在 struts.properties 中定義“ struts.i18n.encoding ”為開發(fā)中使用的字符編碼集。比如在本示例中筆者就定義為“ gb2312 ”。

Struts2講義27


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號(hào)聯(lián)系: 360901061

您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長非常感激您!手機(jī)微信長按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對(duì)您有幫助就好】

您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對(duì)您有幫助,請(qǐng)用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會(huì)非常 感謝您的哦!!!

發(fā)表我的評(píng)論
最新評(píng)論 總共0條評(píng)論
主站蜘蛛池模板: 搜一级毛片 | 精品久久久久久久久久久久久久 | 国产一区二区三区免费观看 | 国内精品久久久久久2021浪潮 | 在线一级片| 国产精品麻豆视频 | 久久九九国产精品 | 久久精品a一级国产免视看成人 | 免费视频爱爱太爽了 | 久久亚洲国产午夜精品理论片 | 光根电影院 | 国产精品久久久久久久久久免费看 | 一级特黄女人生活片 | 久久99精品久久 | 日韩一区二区免费视频 | 三上悠亚2022最新新作番号 | 国产熟妇另类久久久久XYZ | 久久综合一区二区三区 | 久久er精品视频 | 无遮挡羞羞视频 | 色综合天天综合网国产成人网 | 91射射射 | 欧美精品一区在线发布 | 成人嘿嘿视频网站在线 | 日本黄色大片免费看 | 国产99精品在线观看 | 一区二区三区高清视频在线观看 | 成人全黄三级视频在线观看 | caoliusequ| 欧美激情综合色综合啪啪五月 | 日本不卡免费新一二三区 | 狠狠色丁香婷婷综合 | 国产精品美女一区二区 | 天天拍天天干天天操 | 日韩在线操 | 黄色草逼视频 | 日本理伦片午夜理伦片 | 91华人在线视频 | 奇米影音四色 | 久久人人爽人人爽人人片av不 | 久久在线视频 |