為Structs應用配置Webxml文件 第一步:配置ActionServlet
<servlet>
<servlet
name>action</servlet
name>
<servlet
class>org
appache
structs
ActionServlet</servlet
class>
</servlet>
<servlet
mapping>
<servlet
name>action</servlet
name>
<uri
pattern>*
do</url
pattern>
</servlet
mapping>
注意:不管應用中包含多少個子應用
都只需配置一個ActionServlet
因為ActionServlet支持多線程
目前的Structs框架只允許在應用中配置一個ActionServlet
第二步
初始化參數對Servlet的運行環境進行初始化配置
<servlet>
<servlet
name> action</servlet
name>
<servlet
class> org
appache
structs
ActionServlet </servlet
class>
<init
param>
<param
name>config</param
name>
<param
value>/WEB
INF/structs
config
xml</param
value>
</init
param>
</servlet>
表
Struts
中用到的初始化參數
參數名 含義/默認值
config 以相對路徑的方式指明Struts應用程序的配置文件位置
如不設置
則默認值為/WEB
INF/struts
config
xml
config/sub
以相對路徑的方式指明子應用程序的配置文件位置
一般來說
很少用到子應用程序
在此不多描述
debug 設置Servlet的debug級別
控制日志記錄的詳細程度
默認為
記錄相對最少的日志信息
detail 設置Digester的debug級別
Digester是Struts框架所使用的用來解析xml配置文件的一個框架
通過該設置
可以查看不同詳細等級的解析日志
默認為
記錄相對最少的日志信息
第三步
配置歡迎清單
當客戶訪問Web應用時
如果僅僅給出Web應用的Root URL
沒用指定具體的文件名
Web容器會自動調用Web應用的歡迎文件
<welcome
file
list>
<welcome
file>welcome
jsp</welcome
file>
<welcome
file>index
jsp</welcome
file>
</welcome
fiel
list>
說明
<welcome
file
list>可以包含多個<welcome
file>子元素
首先查找第一個<welcome
file>文件
由於<welcome
file
list>元素中不能配置Servlet映射
因此不能直接把Structs的Action作為歡迎文件
可以采用一種變通的方法來實現在歡迎文件中調用Structs Action
首先
在Structs配置文件中為被調用的Action創建一個全局的轉發項
例如
<global
forwards>
<forward name=
welcome
path=
HelloWord
do
/>
</global
forwords>
創建一個welcome
jsp的文件
最後在web
xml文件中把welcome
jsp文件配置為歡迎文件
代碼如下
<welcome
file
list>
<welcome
file>welcome
jsp</welcome
file>
</welcome
file
list>
第四步
配置錯誤處理
<error
page>
<error
code>
</error
code>
<location>/commom/
jsp</location>
</error
page>
<error
page>
<error
code>
</error
code>
<location>/commom/
jsp</location>
</error
page>
也可以為Web容器捕獲的Java異常配置<error
page>
需要設置<exception
type>子元素
它用於指定Java異常類
Web容器可能捕獲如下異常
RuntimeException或Error ServletException或它的子類 IOException或它的子類
<error
page>
<exception
type>java
io
IOException</exception
type>
<location>/common/system_ioerror
jsp</location>
</error
page>
第五步
配置Structs標簽庫
使用客戶化的標簽庫
要配置它們
<taglib>
<tag
uri>/WEB
INF/structs
html
tld<tag
uri>
<taglib
location>/WEB
INF/structs
html
tld</taglib
location>
</taglib>
<tag
uri>用於指定標簽庫的相對或者絕對URI地址
Web應用根據這一URI來訪問標簽庫
<taglib
location>指定標簽描述文件在文件資源系統中的物理位置
Structs配置文件 Structs框架在啟動時會讀入其配置文件
根據它來創建和配置各種Structs組件
<Structs
config>元素
<structs
config>元素是Structs配置文件的根元素
<structs
cofig>元素有
個子元素
它的DTD定義如下
<!ELEMENT structs
config(data
sources?
formbean?
global
exeception?
global
forward?
action
mapping
controller?
message
resources*
plug
in*)>
在Struts配置中
必須按照以上的DTD指定的先後順序來配置<Structs
config>元素的各個子元素
如果顛倒了這些元素的配置文件中的位置
在Structs應用啟動時會生成錯誤
<data
sources>元素
<data
sources>元素包含零個
一個或者多個<data
sources>子元素
<data
sources>用於配置特定的數據源
它可以包含多個<set
property>子元素
用於設置數據源的各種屬性
配置了數據源後
就可以在Action類中訪問數據源
在org
apache
structs
action
Action類中定義了getDataSource(HttpRequrst)方法
它用於獲取數據源對象的引用
DataSource dataSource;
Connection connection;
dataSource =getDataSource(request);
connection=dataSource
getConnection();
也可以在配置文件中聲明多個數據源
此時需要為每一個數據源分配唯一的key值
通過改值來標識特定的數據源
<form
beans>元素
<form
beans>元素用來配置多個ActionForm Bean
<form
beans>包含多個<forom
bean>子元素
每個<from
bean>包含多個屬性
ClassName
name
type
<form
beans>
<form
bean name=
HelloForm
type=
hello
HelloForm
/>
</form
beans>
注意
配置動態ActionForm Bean
還必須配置<form
bean>元素的<form
property>元素
<form
beans>
<form
bean name=
HelloForm
type=
hello
HelloForm
/>
<form
bean name=
userForm
type=
org
apache
structs
action
DynaAction
>
<from
property name=
firstname
type=
java
lang
String
/>
<form
property name=
secondname
type=
java
lang
String
>
<form
property name=
age
type=
java
Integer
initial=
>
</form
beans>
<global
exception>元素
<global
exception>用於配置異常處理
<global
exception>元素可以包含零個或者多個<exception>元素
<exception>元素用來設置java異常和異常處理類org
apache
structs
action
Exception Hander之間的映射
<gloable
forwards>元素
<global
forwards>元素用來聲明全局的轉發關系
<global
forwards>有零個或多個<forward>元素組成
<forward>元素用於把一個邏輯映射到特定的URL
屬性 描 述
className 和<forward>元素對應的配置類
默認為org
apache
structs
action
ActionForWard
name 轉發路徑的邏輯名
此項時必須的
path 指定或者重定向的URI
此項時必須的
必須以
/
開頭
redirect 此項是true
表示是執行重定向的操作
此項是false時
表示請求轉發
<global
forwards>
<forward name=
forward
path=
/Action
do
/>
<forward name=
forward
path=
/Action
do
/>
</global
forwards>
如果jsp
jsp把請求轉發給Action
可以使用以下代碼
<html:link forward=
forward
>
或者<logic:forward name=
forward
>
如果Action
的execute()方法把請求轉發給JSP
jsp
可以使用一下代碼
return(mapping
findForward(
forward
))
<action
mapping>元素
<action
mapping>元素包含零個或者多個<action>元素
<action>元素描述了從特定的請求路徑到相應的Action類的映射
<controller>元素
<controller>元素用於配置ActionServlet
< message
resources>元素
<message
resources>元素用於配置Resource Bundle
Resource Budle用於存放本地化消息文件
Structs標簽
HTML標簽
標簽名 描述
base 包裝HTML的base元素
button 包裝HTML的 button類型的input元素
cancel 包裝HTML cancel 按鈕
checkbox 包裝HTML checkbox 類型的輸入域
errors 有條件地顯示一些error消息
顯示ActionErrors信息
file 包裝HTML文件上傳輸入域
form 定義HTML form 元素
frame 包裝HTML frame 元素
hidden 包裝HTML hidden 輸入域
html 包裝 HTML中的 html 元素
image 包裝
image
類型的輸入域
img 包裝HTML的 img 元素
javascript 包裝根據ValidatorPlugIn提供的校驗規則所提供的javascript校驗腳本
link 包裝超鏈接
messages 有條件地顯示一些提示信息
顯示ActionMessages信息
multibox 包裝多選輸入框
option 包裝一個選擇輸入框
options 包裝一批選擇輸入框
optionsCollection 包裝一批選擇輸入框集
password 包裝密文輸入框
radio 包裝單選輸入框
reset 包裝
重置
功能的按鈕
rewrite 包裝一個URL
select 包裝一個選擇輸入框
submit 包裝一個提交按鈕
text 包裝一個文本輸入框
textarea 包裝一個備注輸入框
ActionForm
ActionForm 的要求
創建一個ActionForm 並不困難
但是你的類必須符合一些要求
ActionForm 必須擴展自org
apache
struts
ActionForm
基類ActionForm 是不能實例化的
ActionForm 必須為每個應該從請求中收集的HTML控件定義一個公共屬性
(Struts
要求每個屬性都要mutator 和accessor
Struts
則沒有如此嚴格)
ActionForm還可能要符合一些可選的要求:
如果你要求ActionForm 在傳遞屬性到Action之前校驗它們
你就必須實現validate
方法
如果想在組裝前初始化屬性
必須實現reset
它在ActionForm 組裝前被調用
動態ActionForm
ActionForm 作為類型轉換器
ActionForm的一個強制點是應該使用String 和boolean屬性
實際上
這意味著屬性
必須得從一種轉換到另一種類型
大部分應用也需要一些屬性
比如電話號碼或者數量
以
一種格式化的方式出現
核心Java 包提供一些工具來做這種事情
但是要清楚地將他們集
成到應用中仍然是一個挑戰
Struts 開發人員經常在ActionForm中包含helper方法
來進行類型轉換
helper 方法
可以有很多種實現方式
這我們在
種敘述
ActionForm 作為防火牆
當請求提交時
ActionServlet 使用一個自動組裝機制來從請求參數中設置請求的
ActionForm屬性
這讓你可以通過控制哪個ActionForm 屬性被暴露來控制哪個請求參數
是可接受的
這也意味著如果你的ActionForm 的粗心設計你可能失去控制哪個參數可以接
受的能力
ActionForm 一定不能包含看起來像是一個JavaBean 屬性
但不能從HTTP 請
求設置的屬性方法
ActionForm 可以嵌套其它bean
因為Struts 標簽擴展和自動組裝機制都支持點號語法來從ActionForm訪問其它
bean
這是一個方便的方式
可以通過ActionForm來組裝存在的bean
在JSP 頁面
你可
以象這樣引用一個嵌套的bean
<html:text
propety=
values
telephoneText
size=
maxlength=
/>
分發(Dispatch )
Struts 開發人員通常使用同一個Action處理相關的操作
一個通常做法來選擇操作是在HTML表單中使用隱藏屬性
BaseForm 的dispatch 屬性也可用作這個目的
public void setDispatch(String dispatch);
public String getDispatch();
Struts 配置提供連個級別嵌套的ActionForward:
Global (全局) ActionForward對整個應用中的所有Action 對象均有效
Local (局部) ActionForward 則在ActionMapping 元素中定義
僅對那些在這個
ActionMapping中調用的Action對象有效
從Action 對象內部來看
forward 通常像這樣來選擇
ActionForward forward = mapping
findForward(
continue
);
From:http://tw.wingwit.com/Article/program/Java/ky/201311/28055.html