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

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