Struts Html標簽和標準的HTML標簽功能相同,這里提倡在Struts應用中使用Struts標簽,這是因為這些標簽可以和Struts框架的其他組件緊密的聯系起來,如比標簽用來定義HTML表單,Struts能夠把這個表單中的數據自動映射到對應的ActionForm中.下面對具體的標簽進行深度研究.首先研討一些基本的東東,我個人認為不是很常用的,生成基本HTML元素的標簽,這些標簽和HTML元素對應,主要包括:
1)生成元素,這個標簽有一個lang屬性,用于顯示用戶使用的語言,設置衛true的時候,標簽將先根據存儲當前HttpSession中的Locale對象來輸出網頁數用的語言,如果沒有HttpSession或者里面沒有Locale對象,就根據HTTP請求頭的屬性來輸出語言,如果HTTP請求頭中沒有,就根據默認的Locale來輸出語言.
2)生成元素,這個用于生成當前網頁的絕對URL路徑.如果使用了這個標簽,當該網頁引用同一個應用的其他網頁的時候,只需要給出相對于當前網頁的相對URL路徑即可.
3)生成Anchor元素,這個是超連接標簽,感覺有一些好處可言,比如允許在RUL中以多種方法包含請求參數.當用戶瀏覽器關閉Cookie的時候,會自動重寫URL,把SessionID作為請求參數包含在URL中,用于跟蹤用戶的Session狀態.它的主要屬性有三種,分別是forward指定全局轉發連接.href指定完整的URL連接.page指定相對于當前網頁的RUL.
4)生成用戶請求URI,用于輸出超連接中的URL部分,但它并不生成HTML
元素.URI指的是URL中的協議,主機和端口以后的內容.
5)生成HTML
元素,用于在HTML頁中嵌入圖片.page屬性指定當前的URI.
根據我個人的一些看法,感覺Struts確實很好,但是在好的東西也有一些不實用的地方,JAVA也是如此,以上方法我比較推薦標簽,感覺這個標簽有十分不錯的功效,下面闡述一下具體的使用方法:
1) 創建全局轉發連接:首先在Struts配置文件中配置
在JSP頁面中引用:index
2) 創建完整URL的連接,也就是說可以連接到其他的站點
Action
3) 從一個網頁連接到同一個應用的另外一個網頁
Action
4) 在URL或者RUI中包含請求參數的方法
Action
5) 在URL或者URI中包含單個請求變量的方法
pagemProperty>Action
paramId屬性指定請求參數名,paramName屬性指定變量名稱,paramProperty指定變量衛JavaBean的屬性.
研討完了StrutsHtml標簽庫的基本標簽,下面開始研究一個重要的東東,Struts的表單標簽以及它的子標簽,單選按鈕,復選框,下拉列表等等,下面是詳細介紹:
1)表單標簽的action屬性來指定當用戶提交表單后,處理用戶請求的組件,就是說在form里action屬性比如設置了一個in.do的,那么在配置文件中action元素的path屬性如果是/in,這就說明是這個action來接收form提交過來的數據.這個感覺挺簡單,此外還需要知道name是設置表單名字,method是來設置請求方法,比如Get或Post.
2)文本標簽的property屬性指定字段的名字,它和ActionForm中的一個屬性匹配,這個屬于表單標簽的一個子標簽,可以把用戶填寫的值提交到具體的ActionForm中
3)標簽在表單中生成取消按鈕,當用戶按下取消按鈕的時候,產生一個取消事件,這個時間由Action來捕獲,至于如何處理在Action類中的execute()方法編程實現,主要用途是在用戶按了提交按鈕,請求沒發送過去又不想提交的時候,起到一個反悔作用.
4)標簽用來生成復位按鈕,類似以上的取消按鈕這些實現復位,取代了HTML代碼.
5)標簽生成提交按鈕.使用方法和取消,復位一樣都是這樣寫代碼的:
提交.
6)標簽在表單上生成隱藏字段,用于在表單上存放不希望讓用戶看到或者不允許修改的信息,它的屬性類似文本標簽,property和ActionForm中的具體屬性對應.如果想要在表單想顯示某個值,而且不希望用戶修改,可以用這個方法.
7)標簽在表單上生成標準的HTML檢查框,比如ActionForm中的屬性是boolean類型只能有2個值,就可以在表單中使用這個標簽來表示.主要通過property屬性來設置對應的ActionForm屬性,還有一個value屬性,用來設置用戶選中檢查框的值,默認值是true,就是說當用value=false的時候如果用戶沒選擇這個檢查框,就把ActionForm的屬性設置衛true,為了檢查框能夠正常工作,必須在ActionForm的reset()方法中對其復位,在value屬性為true的時候,必須在reset()方法中把對應的屬性設置為false.
8)標簽和差不多,區別就在于它可以生成復選框.它的性能比更加靈活,可以動態的決定被選中復選框的數目,只要property屬性相同,而value屬性不一樣,就可以和ActionBean的同一個數組對應.此外checkbox只能和blooean類型的屬性對應,而multibox則沒有限制.
9)標簽表示單選按鈕,多個標簽可以組合使用.
10)標簽生成下拉列表或多選列表,重要的屬性是size屬性指定每次網頁上顯示的可選的項目數量.multiple屬性指定是否支持多項選擇,如果設置為true表示多選列表,默認為false.property屬性于ActionForm中的某個屬性對應,這個屬性用來存儲用戶在列表上選中的值.在單選的情況下,ActionForm的對應屬性定義為簡單類型,不能是數組.在多選的情況下類型是數組.
以上是對StrutsHtml標簽庫的Form系列標簽以及子標簽的簡單闡述,這些標簽不一定都常用,所以了解即可,能掌握常用的幾個標簽就OK了.下面研究一下文件上傳,是指通過用戶瀏覽把用戶本地的文件傳到Web服務器標簽提供了從Html表單中上傳文件的功能.這個標簽也是Form標簽的子標簽所以必須嵌套在中,而且的method屬性必須設置為Post.enctype編碼屬性必須設置為multipart/form-data.而且它的property屬性必須設置和ActionForm中的Flie類型的屬性對應.如果property=”file”則ActionForm中必須要設置private File file;屬性,而且提供相應的get/set方法.然后通過Action來完成接收上傳文件的功能,首先創建一個讀取用戶上傳文件的InputStream流對象,然后創建一個把上傳數據寫到目標文件中的OutputStream對象,接下來通過一個馴化把數據從源文件寫到目標文件中,上傳就實現了.
標簽用于輸出錯誤消息,在request和session范圍尋找ActionMessages或者其子類ActionErrors集合對象.在從ActionMessages集合對象中讀取ActionMessage對象,把ActionMessage對象包含的錯誤消息文本顯示在網頁上.至于具體的錯誤文本消息存放在ResourceBundle中,而且標簽能識別錯誤文本中的HTML元素,例如等等.標簽可以存放在網頁的任何地方,也可以在表單內.因為它輸出錯誤和它在網頁的位置無關.它的具體屬性是.1)name:指定ActionMessages對象的屬性key,標簽處理類根據這個key來家查request或session范圍的ActionMessages集合對象.2)property:指定消息屬性,如果不設置會顯示ActionMessages集合對象中所有的消息對象ActionMessage.3)bundle:指定ResourceBundle如果這個沒設置,將從應用中默認的ResourceBundle中獲取消息.
標簽和標簽有些類似,也能夠在網頁中輸出消息,具體的屬性是:1)name:指定ActionMessages對象的屬性key,標簽處理根據這個key來檢索request或者session范圍內的ActionMessages對象.2)message:指定消息的來源,如果是true則從request或者session范圍內檢索出屬性key為Globals.MESSAGE_KEY的具體的ActionMessages對象.3)id:用來命名從消息集合中檢索出每個ActionMessages對象,它和標簽的name屬性匹配.