在本文系列的第一部分中
你已經學習了如何配置Struts提供的HTML標簽庫以及獨立使用的標簽
在第二部分中你學習了和form相關的標簽
在第三部分中
你將學習如何在Login程序中使用HTML標簽庫
你可以點此下載該程序
如果你閱讀過關於Struts的系列文章(包含六個部分)
你會發現這個Longin程序是上次我們討論過的Login程序的增強版
圖 應用程序目錄結構 這個Login程序是一個簡單的Struts程序
它將顯示如何使用HTML標簽庫
尤其是和form相關的標簽和用於錯誤處理的標簽
其目錄結構如圖
中所示
本文將介紹程序中每個類之間的關系以及它們所起的作用
注意
你必須自己將所有的庫文件復制到WEB
INF/lib目錄下
為了節省下載時間它們沒有被包含在ZIP文件中
視圖 MVC范例中有三種作為視圖的JSP頁面
login
jsp
mainMenu
jsp和viewSecret
jsp
login
jsp文件中包含一個用於用戶登錄的form
mainMenu
jsp中顯示了兩個鏈接(注銷(log out)和查看公司機密)
而viewSecret
jsp則用來顯示一條機密消息
這個程序的首頁面是一個Login頁面
它是一個包含兩個輸入框(userName和password)的form(見圖
)
用戶被要求在這兩個輸入框中輸入正確的值
登錄成功之後程序會顯示mainMenu
jsp頁面
它包含兩個鏈接
一個是注銷
另一個是查看公司機密賬號(見圖
)
如果點擊了
注銷
鏈接
程序便會退出並重新顯示Login頁面
如果點擊了
查看機密
鏈接
則會顯示viewSecret
jsp 頁面
如果注冊失敗
那麼用戶會被重新引導到Login頁面以重新登錄
如果點擊了
注銷
鏈接
程序便會退出並重新顯示Login頁面
如果點擊了
查看機密
鏈接
則會顯示viewSecret
jsp 頁面
如果注冊失敗
那麼用戶會被重新引導到Login頁面以重新登錄
圖 Login頁面 如果用戶輸入正確的用戶名和密碼
程序會建立一個session對象
並會有一個名為loggedIn的屬性被添加到這個session對象中去
只有當程序能夠在用戶的session對象中查找到這個loggedIn屬性時
用戶才可以浏覽Main Menu頁面和Secret頁面
所有缺少該屬性或無效的session對象都會迫使用戶登錄
在這個程序中
正確的用戶名是
john
密碼是
這些值是程序中固定寫死的以避免需要連接到數據庫裡或使用其他存儲來完成用戶驗證
當用戶注銷時
他或她的session對象將失效
同時Longin頁面會重新顯示
當用戶點擊鏈接要查看公司機密時
會彈出viewSecret
jsp頁面(見圖
)
圖 主頁面 配置文件 Login程序有兩個位於WEB
INF目錄下的配置文件
作為部署描述符的web
xml文件(見列表
)
以及作為Struts配置文件的truts
config
xml文件 (見列表
)
在列表
中
你需要特別注意action servlet配置中的<init
param>元素
<init
param>
<param
name>application</param
name>
<param
value>com
javapro
struts
ApplicationResources
</param
value>
</init
param>
一個<init
param>元素代表一個初始化參數
它會被包含在傳送到action servlet中的ServletConfig對象裡
帶有名為
application
的初始化參數對action servlet來說具有特殊的意義
它定義了一個會被加載到缺省消息資源(message resource)中的屬性文件
(我將在
消息資源
部分介紹這個屬性文件)
在這個程序中
該屬性文件被用於存貯整個程序中的錯誤消息
部署描述符中需要注意的第二個地方是的<taglib>元素
它包含<taglib
uri>和<taglib
location>元素
基本上
<taglib>元素是用來告訴servlet容器如何使用一個標簽庫的
該標簽庫的TLD文件可以在<taglib
location>元素指定的位置找到
educitycn/img_///gif> 圖 機密頁面 注意在列表
中
<form
beans>部分包含一個名為loginForm的form bean
我在關於Struts系列文章的第五部分中曾介紹過form bean
WEB
INF目錄中的最後一個文件是struts
html
tld文件
它是HTML標簽庫中的TLD文件
為了節省時間我將跳過對它的介紹
但你可以在ZIP文件中的WEB
INF目錄下找到它
Form 該form以com
javapro
struts
LoginForm類的形式顯示(見列表
)
注意粗體的部分
它通過傳入
error
missing
userName
和
error
missing
password
字符串來舉例說明ActionError對象
這些字符串在消息資源中起關鍵字(key)的作用
Action類 Action類分兩種
LoginAction (見列表
)和LogoutAction(見列表
)
另外值得一提的是如何通過消息資源中的一個關鍵字來構建這個ActionError消息(在列表
中顯示為粗體)
HTML標簽庫的使用 列表
列表
和列表
中分別包含了JSP文件
login
jsp頁面(見列表
)中顯示了如何在HTML庫中使用這些標簽(粗體部分)
我在本文系列的第一部分中介紹過這些標簽
但通過看它如何在真正的程序中運行
你會對它們有更深入的了解
消息資源 如我在
配置文件
部分簡要介紹的那樣
在WEB
INF/classes/com/javapro/struts目錄下的ApplicationResources
properties 文件中包含配對的key/values
它們會被加載到缺省的消息資源中去
HTML標簽庫中的<errors>標簽會在該消息資源中查找到自定義的錯誤消息
想知道它是如何出錯的
你可以試著用一個錯誤的用戶名或密碼來登錄
看看顯示的錯誤消息是什麼
更改錯誤消息和編輯屬性文件一樣容易
看看如下的屬性文件
errors
header=
<b>Error(s)!!!</b><ul>
errors
footer=
</ul><hr>
error
missing
userName=
<li>A user name was not found
</li>
error
missing
password=
<li>A password was not found
</li>
error
login
failed=
<li>Incorrect user name and/or password
</li>
如果你檢查了程序的web
xml文件
你會看到這些對象是如何被加載的
消息資源通過將程序的參數傳入ActionServlet來完成加載過程
在ActionServlet進行初始化時
它會將package文件夾中的ApplicationResources
properties屬性解析為缺省的消息資源
如果在資源中更改一個消息並重新加載程序
它就會在整個程序中顯示
在你的Login程序中
這個屬性文件包含一些程序的類中所使用的錯誤消息
本文介紹了如何在一個簡單的Login程序中使用HTML標簽庫
它對程序進行了詳細描述
包括視圖
配置文件
form bean
action類以及用於JSP頁面的代碼
From:http://tw.wingwit.com/Article/program/Java/ky/201311/28134.html