大大毛
的筆記
  DDM's Note
哪怕沒有辦法一定有說法,
就算沒有鴿子一定有烏鴉,
固執無罪 夢想有價,
讓他們驚訝.
posts - 14, comments - 23, trackbacks - 0, articles - 58
::
首頁
:: ::
聯系
:: ::
管理
精通Struts筆記--04.01
Posted on 2006-08-02 11:42
大大毛
閱讀(767)
評論(0)
編輯
收藏
所屬分類:
Struts
???Struts應用的配置
??????Struts的配置是兩個文件web.xml以及struts配置文件
??????
1.web.xml
?????????配置ActionServlet,其方法與配置普通的Servlet一致,涉及的元素是<servlet> (名稱,類,參數),<servlet-mapping> (servlet所要處理的URL),<taglib> (客戶化標簽庫)
這里
ActionServlet配置
<
servlet
>
????
<
servlet-name
>
action
</
servlet-name
>
????
<
servlet-class
>
org.apache.struts.action.ActionServlet
</
servlet-class
>
????
<
init-param
>
????????
<
param-name
>
config
</
param-name
>
????????
<
param-value
>
/WEB-INF/struts-config.xml
</
param-value
>
????
</
init-param
>
????
<
init-param
>
????????
<
param-name
>
config/moduleA
</
param-name
>
????????
<
param-value
>
/WEB-INF/struts-moduleA.xml
</
param-value
>
????
</
init-param
>
</
servlet
>
<
servlet-mapping
>
????
<
servlet-name
>
action
</
servlet-name
>
????
<
url-pattern
>
*.do
</
url-pattern
>
</
servlet-mapping
>
??????可以看到,<servlet>標簽與<servlet-mapping>相對應,由于Struts只支持配一個ActionServlet,因此只能出現一對。
??????ActionServlet支持用戶類,只需要改變這里的<servlet-class>即可使用自定義類;
??????<servlet>/<init-param>標簽中,config代表Struts配置文件所在的位置,這里需要注意 config/moduleA的寫法,它代表著一個
模塊moduleA
以及支持該模塊的配置文件
??????<init-param>可以具有多個,在這里可以保存一些客戶化的參數,使用servlet.getInitParameter("paramname")的方式即可以取得。
??????<url-parttern>代表該servlet所要處理的URL,支持通配符,*.do代表所有以 .do 為后綴的請求都交由該servlet來處理
標簽庫配置
<
taglib
>
????
<
taglib-uri
>
/WEB-INF/struts-html.tld
</
taglib-uri
>
????
<
taglib-location
>
/WEB-INF/struts-html.tld
</
taglib-location
>
</
taglib
>
??????<taglib-uri>:指定標簽庫的相對或絕對URI地址,即在JSP頁面中引用標簽時,需與之對應;
??????<taglib-location>:指定標簽庫的物理位置,即實際存放在什么地方。
歡迎文件配置
<
welcome-file-list
>
????
<
welcome-file
>
welcome.jsp
</
welcome-file
>
????
<
welcome-file
>
index.html
</
welcome-file
>
</
welcome-file-list
>
??????<welcome-file>:web應用的歡迎文件,即只輸入了應用的根目錄時響應的文件,按先后順序查找;
??????該元素不能被配置成Action,如果有此需要的話則應在這里配置一個JSP,并在JSP里面<logic:forward name="key" />進行跳轉
錯誤代碼配置
<
error-page
>
????
<
error-code
>
404
</
error-code
>
????
<
location
>
/common/404.html
</
location
>
</
error-page
>
??????<error-page>:指定web出錯后的處理頁面,常見的錯誤多是404:找不到目錄或文件,500:服務器內部錯誤;
??????<error-code>:指定需要處理的錯誤號;
??????<location>:指定出錯后跳轉的處理頁面,這里可以設置JSP頁面。
異常捕獲配置
<
error-page
>
????
<
exception-type
>
javax.servlet.ServletException
</
exception-type
>
????
<
location
>
/common/system_error.jsp
</
location
>
</
error-page
>
??????捕獲的異常:
?????????RuntimeException 或 Error
?????????ServletException
?????????IOException
??????
2.Struts配置文件
?????????Struts配置的相關類位于org.apache.struts.config包中,其中ModuleConfig接口是整個樹的頂點,各種配置信息都放入ModuleConfig的實現類中(由于存在著多模塊,因此會有多個實現)。因此從ModuleConfig接口中可以取得各種配置信息,當然需要先通過selectModule()來選擇需要操作的具體實現。
?????????還需要注意的一點就是在Struts配置文件里面DTD文件嚴格定義了各個元素出現的先后順序。
datasources元素
<
data-sources
>
????
<
data-source?
type
="org.apache.commons.dbcp.BasicDataSource"
>
????????
<
set-property?
property
="dirverClassName"
?value
="com.microsoft.jdbc.sqlserver.SQLServerDriver"
?
/>
????????
<
set-property?
property
="url"
?value
="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=addressbook;"
?
/>
????????
<
set-property?
property
="username"
?value
="sa"
?
/>
????????
<
set-property?
property
="password"
?value
="i?am?ddm"
?
/>
????????
<
set-property?
property
="autoCommit"
?value
="false"
?
/>
????????
<
set-property?
property
="readOnly"
?value
="false"
?
/>
????????
<
set-property?
property
="minCount"
?value
="2"
?
/>
????????
<
set-property?
property
="maxCount"
?value
="20"
?
/>
????????
<
set-property?
property
="description"
?value
="SQL?Server2000"
?
/>
????
</
data-source
>
????
<
data-source?
key
="datasource.other"
?type
="
"
>
????????
????
</
data-source
>
</
data-sources
>
??????<data-sources>:配置應用的數據源,可以包含多個<data-source>子標簽
??????<data-source>:數據源的參數,由于可以有多個數據源,因此<data-source>有一個屬性 key 用于區分,如果沒有 key 屬性,Struts將此做為缺省的數據源,該缺省數據源實際上也是有 key 值的,對應于Globals.DATA_SOURCE_KEY的值,實際值是 "org.apache.struts.action.DATA_SOURCE"字串。
?????????:key 屬性的值不允許重復,自行指定key屬性后,在Action中操作為 this.getDataSource(request,key),在其它地方則需要從ServletContext(application范圍)中用 (DataSource)getAttribute(key),
參數key的值與該屬性值完全相同
,因此在配置文件中該屬性應該具有一定的區別性,如"datasource.other"等,以避免在引用時出現麻煩,另外如果在配置文件中各個data-source
都配置了key屬性
,那么在應用
僅能通過對應的key值進行調用
,而
不會存在著缺省數據源
("org.apache.struts.action.DATA_SOURCE");
?????????:使用Myeclipse插件配DBCP時還需要手工修改
幾處
。
這里
form-beans元素(普通)
<
form-beans
>
????
<
form-bean?
name
="loginForm"
?type
="com.ddm.struts.addressbook.form.LoginForm"
?
/>
</
form-beans
>
??????<form-beans>:配置ActionForm,可以包含多個<form-bean>子標簽
??????<form-bean>:ActionFormBean的參數。
?????????className:該標簽對應的配置類,Struts中與之對應的類是"org.apache.struts.config.FormBeanConfig",有需要時也可自行指定
?????????name:該ActionForm的唯一標識符
?????????type:ActionForm的類名
form-bean元素(動態)
<
form-bean?
name
="userForm"
?type
="org.apache.struts.action.DynaActionForm"
>
????
<
form-property?
name
="firstName"
?type
="java.lang.String"
?
/>
????
<
form-property?
name
="lastName"
?type
="java.lang.String"
?
/>
????
<
form-property?
name
="age"
?type
="java.lang.Integer"
?initial
="18"
?
/>
</
form-bean
>
??????<form-bean>:動態的ActionForm的type="org.apache.struts.action.DynaActionForm"或子類;
??????<form-property>:配置ActionForm的成員屬性
?????????name:屬性名稱
?????????type:屬性類型,必須是對象類型。如果是Java簡單數據類型需要使用包裝類
?????????inital:初始值,可缺省,與類的屬性可以不用初始化的特性相同
??????另:這個動態ActionForm還很有些名堂,現在只能逐步推進了
這里
global-exceptions元素
<
global-exceptions
>
????
<
exception
????????
className
="org.apache.struts.config.ExceptionConfig"
????????handler
="org.apache.struts.action.ExceptionHandler"
????????key
="global.error.login"
????????bundle
="bundle01"
????????path
="/err.jsp"
????????scope
="request"
????????type
="com.ddm.struts.addressbook.LoginException"
????
/>
</
global-exceptions
>
??????<global-exception>:配置
全局
異常處理,可以包含多個<exception>子標簽,其配置方法與局部(Action)異常配置相同,但是作用域不同,類似于Java類的成員屬性與同名方法形參作用域之間的關系,對照想想setter就清楚了
??????<exception>:配置異常處理
?????????className:與<exception>標簽對應的配置類,缺省是"org.apache.struts.config.ExceptionConfig";
?????????handler:異常處理類,缺省是"org.apache.struts.action.ExceptionHandler";
?????????key:描述異常的消息在資源文件中的key;
?????????bundle:資源文件,可缺省;
?????????path:Struts捕獲到指定類型的異常后,轉發的處理路徑;
?????????scope:ActionMessages實例的存放范圍,缺省為"request",還可取值"session";
?????????type:異常的類型
這里
global-forwards元素
<
global-forwards
>
????
<
forward
????????
className
="org.apache.struts.action.ActionForward"
????????contextRelative
="false"
????????name
="login"
????????path
="/login.jsp"
????????redirect
="false"
????
/>
????
<
forward
????????
name
="toModuleA"
????????contextRelative
="true"
????????path
="/moduleA/index.do"
????????redirect
="true"
????
/>
</
global-forwards
>
??????<global-forwards>:配置
全局
forward,可包含多個<forward>子標簽。
??????<forward>:配置forward
?????????className:與<forward>標簽對應的配置類,缺省為"org.apache.struts.action.ActionForward";
?????????contextRelative:缺省值為"false",表示path相對于應用;當取值為"true"時,表示path屬性給出的是相對于當前上下文的URL,如果配置用于子模塊之間切換的forward,則此項需設為"true";
?????????name:名稱;
?????????path:轉發的路徑,必須以"/"打頭
?????????redirect:缺省值為"false",表示請求轉發,取值"true"時,表示重定向,子模塊切換用的forward,此項需設為"true"?
action-mappings元素
<
action-mappings
>
????
<
action
????????
className
="org.apache.struts.action.ActionMapping"
????????attribute
="loginForm"
????????input
="/login.jsp"
????????name
="loginForm"
????????path
="/login"
????????scope
="request"
????????validate
="true"
????????parameter
="36"
????????roles
=""
????????unknown
="false"
????????type
="com.ddm.struts.addressbook.action.LoginAction"
????????forward
="
"
????????include
="
"
????
>
????????
<
exception?
????????????
key
="global.error.login"
????????????path
="/err.jsp"
????????????type
="com.ddm.struts.address.LoginException"
????????
/>
????????
<
forward?
name
="loginSuccess"
?path
="/menu.jsp"
?
/>
????????
<
forward?
name
="loginFaile"
?path
="/login.jsp"
?
/>
????
</
action
>
</
action-mappings
>
??????<action-mappings>:配置Action,可包含多個<action>子標簽
??????<action>:配置Action
?????????className:標簽對應的配置類,缺省為"org.apache.struts.action.ActionMapping"
?????????attribute:name屬性所對應的ActionForm實例的
key
,通過這個attribute操作它,如 (LoginForm)request.getAttribute("loginForm"); ;
?????????input:輸入URL,轉發到該 Action 時如果 ActionForm.validate()
檢驗失敗,Action 將把請求轉發到該URL,
請看
?;
?????????name:與Action對應的ActionForm的 name ,與<form-bean>標簽的name屬性相匹配;
?????????path:Action的訪問路徑,必須以"/"打頭,不需要后綴
?????????scope:與Action對應的ActionForm的存在范圍,缺省是"session",可取值"request";
?????????validate:是否需要調用ActionForm的 validate() 方法進行檢驗,缺省是"true",可取值"false",ActionForm將不會對提交的數據進行表單校驗;
?????????parameter:可附加的參數,在Action中可以用 mapping.getParameter() 來獲取;
?????????roles:指定允許調用該Action的安全角色,與容器設置的安全角色匹配,由容器來判斷;
?????????unknown:表示是否處理用戶發出的所有無效的Action URL,默認為"false";
?????????type:Action的類名;
?????????forward:指定轉發的URL,相當于使用ForwardAction
?????????include:指定包含的URL,相當于使用IncludeAction
?????????<exception>:Action局部異常捕獲,
參看<global-exceptions>小節
?????????<forward>:Action局部forward,
參看<global-forwards>小節
??????注意:
?????????<action>標簽的type,forward,include三種屬性互斥。
controller元素
<
controller
????
className
="org.apache.struts.config.ControllerConfig"
????contentType
="text/html;charset=UTF-8"
????locale
="true"
????nochache
="false"
????proccessorClass
="org.apache.struts.action.RequestProcessor"
/>
??????<controller>:配置ActionServlet
?????????className:標簽的配置類,缺省為"org.apache.struts.config.ControllerConfig";
?????????contentType:指定響應結果的內容類型和字符編碼,如果在Action和JSP中設置將會覆蓋掉該設置;
?????????locale:指定是否把 Locale 對象保存到session中,默認值為"false";
?????????nochache:是否在客戶端緩存,缺省為"false",可選"true",struts將在響應中加入特定的頭參數以防止頁面被緩存
?????????processorClass:指定負責處理 Request 的類,缺省為"org.apache.struts.action.RequestProcessor",如果有多模塊則應在各模塊指定自己的處理類;
?????????bufferSize:指定上傳文件的輸入緩沖,默認為"4096";
?????????tempDir:指定處理上傳文件的臨時工作目錄,Servlet容器可以自行分配。
message-resources元素
<
message-resources?
????
className
="org.apache.struts.config.MessageResourcesConfig"
????factory
="org.apache.struts.util.PropertyMessageResourcesFactory"
????key
="org.apache.struts.action.MESSAGE"
????null
="true"
????parameter
="com.ddm.struts.addressbook.ApplicationResources"
?
/>
??????<messge-resources>:配置資源文件,這個標簽與以上的幾個有點不同,他本身可以存在多個
?????????className:標簽的配置類,缺省為"org.apache.struts.config.MessageResourcesConfig";
?????????factory:資源的工廠類,缺省為"org.apache.struts.util.PropertyMessageResourcesFactory";
?????????key:指定 Resource Bundle 存放在 ServletContext 中的 key,缺省為Globals.MESSAGES_KEY的值 "org.apache.struts.MESSAGE" ,可以自行指定key,使用如resource.bundle01加以區別,可通過 (MessageResources)servletContext.getAttribute(key) 拿到,Struts提供的客戶化標簽中常常可以見到一個 bundle 屬性,該屬性即對應于這里的 key 值;
?????????null:指定如何處理未知的消息,缺省為"true",返回空字串,可選"false",將返回類似"???key???"的字串;
?????????parameter:資源文件的存放路徑。
plug-in元素
<
plug-in?
className
="com.ddm.struts.addressbook.bean.UserBean"
>
????
<
set-property?
property
="path"
?value
="/WEB-INF/user.xml"
?
/>
</
plug-in
>
??????<plug-in>:配置插件,className屬性指定具體的插件類,struts配置文件中可配置多個插件,
初始化順序由書寫順序決定
;
??????<set-property>:設置插件的屬性,可具有多個,該插件類必須實現與本屬性對應的setter/getter,在Struts初始化時自動set。
??????插件必須實現 org.apache.struts.action.PlugIn 接口,該接口具有兩個方法:
public
?
void
?init(ActionServlet?servlet,ApplicationConfig?config)?
throws
?ServletException;
??????init方法將于Struts應用啟動時被調用,是一個初始化客戶資源的接口,而且由Struts傳入的參數也便于設置各種環境。
public
?
void
?destroy();
??????destroy方法于Struts應用關閉時調用,是一個釋放客戶資源的接口。
??????
多應用模塊的配置
??????多應用模塊的劃分有助于應用的并行開發,提高效率。
??????步驟:
?????????1.為每個子應用創建單獨的 Struts 配置文件;
?????????2.在 web.xml 中配置每個子應用的信息,參看
這里
;
?????????3.應用中實現切換:<forward> 或 在<action>標簽中使用 SwitchAction 來實現切換
新用戶注冊
刷新評論列表
只有注冊用戶
登錄
后才能發表評論。
網站導航:
博客園
IT新聞
Chat2DB
C++博客
博問
管理
相關文章:
精通Struts筆記--04.01
精通Struts筆記--03.02
Struts國際化的快速演示
Struts中action之間控制權轉移的問題
Struts中文問題的暫時解決
DBCP數據源的配置問題(Myeclipse)
精通Struts筆記--03.01
Digester類的簡單使用方法
web.xml中無法添加<taglib>標簽問題的解決
精通Struts筆記--02
Powered by:
BlogJava
Copyright © 大大毛
日歷
<
2025年5月
>
日
一
二
三
四
五
六
27
28
29
30
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
1
2
3
4
5
6
7
公告
果然是不能想得太好。
隨筆分類
(4)
VB培訓(4)
文章分類
(59)
JAVA
(6)
Spring
(3)
Hibernate
Struts
(12)
NET
VB
(2)
ASP
(1)
ASP.NET
(6)
HTML
(3)
400
(2)
I4.0
Nifi
(5)
Angular
(1)
SQL
(15)
常用算法
(1)
其它
(2)
積分與排名
積分 - 60365
排名 - 871
最新評論
1.?re: 手工添加MyEclipse的XML文件模板[未登錄]
請問,eclipse下面有沒有呢?現在想要實現eclipse的xml的模板進行配置修改,簡單說,就是把新建時候的名字作為其中的一個tag;找了很久沒有找到方法
--allen
2.?re: 第二章 Visual Basic 基礎語法
受益匪淺,多謝!
--yuleself
3.?re: 數字填空
評論內容較長,點擊標題查看
--去去去去去去去去去去去去去去去去去去去去去去去去去去去去去去去去去去去去去去去去去去去去去去去去去去
4.?re: Checkbox聯動演示
dcdc
--dcd
5.?re: 利用TN5250NF下載檔案的自動化處理
請教若密碼要動態生成,是否有辦法呢?
謝謝
--江佳桂
i am ddm
主站蜘蛛池模板:
亚洲男人第一av网站
|
亚洲成人免费网址
|
久久99精品免费一区二区
|
老司机亚洲精品影院在线观看
|
亚洲男人的天堂网站
|
亚洲精品中文字幕无码A片老
|
香蕉大伊亚洲人在线观看
|
亚洲综合精品成人
|
亚洲国产欧美一区二区三区
|
亚洲AV女人18毛片水真多
|
性色av极品无码专区亚洲
|
老司机免费午夜精品视频
|
免费人成在线观看播放a
|
一区二区三区在线免费观看视频
|
亚洲国产免费综合
|
国产在线一区二区综合免费视频
|
久久久久亚洲精品男人的天堂
|
亚洲Av无码乱码在线播放
|
亚洲美日韩Av中文字幕无码久久久妻妇
|
亚洲AⅤ优女AV综合久久久
|
亚洲中文字幕丝袜制服一区
|
亚洲日韩一页精品发布
|
亚洲成在人天堂一区二区
|
亚洲午夜精品国产电影在线观看
|
99热亚洲色精品国产88
|
国产亚洲精品美女久久久久
|
亚洲AV无码之国产精品
|
免费人成大片在线观看播放
|
日韩免费高清播放器
|
24小时在线免费视频
|
四虎成人免费影院网址
|
亚洲国产激情一区二区三区
|
国产成人亚洲综合无码精品
|
亚洲不卡中文字幕
|
国产亚洲男人的天堂在线观看
|
一区二区三区在线免费观看视频
|
伊人久久免费视频
|
亚洲自国产拍揄拍
|
国产亚洲精品美女久久久久久下载
|
拍拍拍无挡视频免费观看1000
|
99久久精品日本一区二区免费
|