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

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