?
Struts 原理
?
?
-Struts_ 工作原理與核心配置 :
以前
(Servlet)
先寫
DAO.
然后
JSP
頁面根據
web.xml
中配置的
servlet
與
Servlet-mapping
再到
Servl
et(
接收參數,驗證,調用
DAO
等操作
)-
》跳轉不同的頁面。
? 使用 Struts 時原理:
? JSP->web.xml->ActionServlet(url-pattern:*.do)->struts-config.xml( 根據 path 路徑對應的 action 與 actionFrom)->ActionFrom->validate 方法驗證(若通過進入 action ,否則返回 input 錯誤頁) ->action-> 調用
?
DAO 進行邏輯判斷 -> 成功時跳轉某個頁面( struts-config.xml:forward ) , 失敗時可以返回錯誤頁( input )
?
?
Struts-config.xml 中的配置組成 :
① <form-beans>------------ 包含多個 form-bean.
???? <form-bean name="loginForm"-------name 為該 bean 的名稱,唯一標識。
??????????? type="com.struts.form.loginForm"/>-------- 該 bean 的包 . 類名 .
</form-beans>
此配置是對 Actionform 。
② <action-mappings>
?? <action........>// 可配置多個 action ,對應寫的 Action 類。
? </action-mappings> ?? ????????
name.attribute 表是該 Action 所對應的 ActionForm 的 name 屬性。
input 是用來作為錯誤頁的,當 validate 方法執行后有錯誤,則自動跳轉到該頁面。
path 表示該 Action 的虛擬路徑,必須加 /, 不用加· do.
scope="request": 表示 Action 所保存的屬性范圍, request 表示每次請求重新建立新的 Action 。
type 表示該 Action 的包 . 類名。。
在 Action 中可包含多個 forward 路徑
forward 屬性: name 為該 forward 的唯一標識,在 Action 代碼執行跳轉時需要通過的該 name 來查找對應的路徑。 ??????????? path 標識該 forward 所要跳轉的路徑,
以上內容配置的為 Action 。
①和②必須一一對應。兩個必須都有。等于把 Servlet 分成兩部分。一個 Action 只能對應一個 Actionform, 而一個 ActionForm 可已有多個 Action 使用它。 *********** 配置中如 /login 路徑 path 都帶 / ,表示從 webroot 下開始往下找路徑,【不加 / 會報錯】
③資源文件的配置:
? ??? <message-resources parameter="com.pro.struts.ApplicationResources" />
表示資源文件改包名地方。
?
?
ActionFrom 中參數類型接受:
如果參數為 int 類型接受,則會自動進行類型轉換,當無法轉換時,會使用默認值來進行處理,默認值為 0 ;
?
注意:不要將 int 或 Date 等需要轉換的類型,直接放入對象中。
?
?
Bean 標簽
Bean: 用來處理屬性范圍中的屬性,可以對其進行復制,添加和顯示,并可以完成國際化功能。
Logic: 用來完成頁面上的邏輯判斷和迭代循環。
Html: 用來替代 HTML 頁面元素的標簽。
?
1. ?????? bean:defind 標簽:用來創建或復制一個屬性范圍中的屬性。
Bean:defind 中的屬性:
Id: 表示新建立屬性在屬性范圍中的名稱,自行定義,如果有重復的,則自動覆蓋。
Value: 表示新建立的屬性的值,只能是字符串。
Name :表示要復制的的屬性在屬性范圍中的名稱,與 value 不能同時使用。
Scope :表示所要復制的屬性所在的屬性范圍,如果不填寫,默認是 4 種屬性范圍。
toScope :表示范圍后的新的屬性所保存的屬性范圍,如果不填寫,默認是 page 范圍。
?
如果屬性范圍中保存的為一個 vo 對象,這里要復制該對象的一個屬性,可以通過 pro 皮而已來進行處理 .
? Property: 表示所復制的屬性其中包含的子屬性的名稱,必須有 getter 和 sertter 方法。
格式化: # 和 0 都表示一位數字,這里 # , ##0.00 表示顯示格式為 3 位數字, 3 位數字, 2 位數字
?
?
格式化:
金錢格式化: #,##0.00
?
# 與 0 的區別,如果該位不存在時,如果使用 # ,則不會顯示該位,如果使用 0 ,則會顯示補 0
Double 格式化: #,##0.00
日期格式化: yyyy-MM-dd
?
Struts 國際化
需要使用 bean:message 標簽來實現該功能,并且需要資源文件的支持。
這里需要完成多個語言的現實,因此要建立多個資源文件,同時要求資源文件的命名必須規范
資源文件命名規范:以原有資源文件為基準,在其主文件名后 + 語言種類編碼
?
最后在頁面通過調用 <bean:message key=””> 標簽來調用。
?
?
?以后繼續修改……
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
