程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> struts-helloapp 學習小記

struts-helloapp 學習小記

編輯:關於JAVA

:用於顯示Struts框架中其他組件產生的錯誤消息。

:用於創建HTML表單,它能夠把Html表單的字段和ActionForm Bean的屬性關聯起來。

:該標簽是的子標簽,用於創建Html表單的文本框。它和ActionForm Bean的屬性相關聯。

:用於輸出本地化的文本內容,它的key屬性指定消息key,和消息key匹配的文本內容來自於專門的Resource Bundle

:用於輸出JavaBean的屬性值。本例中,它用於輸出personbean對象的userName屬性值:

標簽用來判斷JavaBean在特定的范圍內是否存在,只有當JavaBean存在,才會執行標簽主體中的內容。

控制器組件包括ActionServlet類和Action類。ActionServlet類是Struts框架自帶的,它是整個Struts框架的控制樞紐,通常不需要擴展。Struts框架提供了可供擴展的Action類,它用來處理特定的HTTP請求。

當用戶提交了HTML表單,Struts框架自動把表單數據組裝到ActionForm Bean中。ActionForm Bean中的屬性和Html表單中的字段一一對應。接下來Struts框架會自動調用ActionForm Bean的validate()方法進行表單驗證。如果validate()方法返回的ActionErrors 對象為null,或者不包含任何ActionMessage對象,就表示沒有錯誤,數據驗證通過。如果ActionErrors中包含ActionMessage對象,就表示發生了驗證錯誤,Struts框架會把ActionErrors對象保存到request范圍內,然後把請求轉發到恰當的視圖組件,視圖組件通過標簽把request范圍內的ActionErrors對象中包含的錯誤消息顯示出來,提示用戶修改錯誤。

Action類的工作機制:當ActionForm Bean被創建,並且表單驗證順利通過後, Struts框架就會調用Action類的execute()方法。execute()方法包含以下參數:

ActionMapping:包含了這個Action的配置信息,和struts-config.XML文件中的元素對應。

ActionForm:包含了用戶的表單數據,當Struts框架調用execute()方法時,ActionForm中的數據已經通過了表單驗證。

HttpServletRequest:當前的HTTP請求對象

HttpServletResponse:當前的HTTP響應對象

Action類的execute()方法返回ActionForward對象,它包含了請求轉發路徑信息。

當HelloAction類調用HttpServletRequest的setAttribute()方法,向hello.JSP傳遞PersonBean對象時,需要提供一個名為“personbean”的屬性key:

request.setAttribute("personbean",pb);

hello.JSP通過這個名為“personbean”的屬性key來讀取PersonBean對象:

Hello !

type = "hello.HelloAction" //指定Action的完整類名

name = "HelloForm" //指定需要傳遞給Action的ActionForm Bean

scope = "request" //指定ActionForm Bean的存放范圍

validate = "true" //指定是否執行表單驗證

input = "/hello.JSP"> //指定當表單驗證失敗時的轉發路徑

//定義了一個請求轉發路徑

本例中的元素配置了HelloAction組件,對應的類為hello.HelloAction,請求訪問路徑為“HelloWorld”,當Action類被調用時,Struts框架應該把已經包含表單數據的HelloForm Bean傳給它。HelloForm Bean存放在request范圍內,並且在調用Action類之前,應該進行表單驗證。如果表單驗證失敗,請求將被轉發到接收用戶輸入的網頁hello.jsp,讓用戶糾正錯誤。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved