大大毛
的筆記
  DDM's Note
哪怕沒(méi)有辦法一定有說(shuō)法,
就算沒(méi)有鴿子一定有烏鴉,
固執(zhí)無(wú)罪 夢(mèng)想有價(jià),
讓他們驚訝.
posts - 14, comments - 23, trackbacks - 0, articles - 58
::
首頁(yè)
:: ::
聯(lián)系
:: ::
管理
精通Struts筆記--04.01
Posted on 2006-08-02 11:42
大大毛
閱讀(766)
評(píng)論(0)
編輯
收藏
所屬分類(lèi):
Struts
???Struts應(yīng)用的配置
??????Struts的配置是兩個(gè)文件web.xml以及struts配置文件
??????
1.web.xml
?????????配置ActionServlet,其方法與配置普通的Servlet一致,涉及的元素是<servlet> (名稱,類(lèi),參數(shù)),<servlet-mapping> (servlet所要處理的URL),<taglib> (客戶化標(biāo)簽庫(kù))
這里
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>標(biāo)簽與<servlet-mapping>相對(duì)應(yīng),由于Struts只支持配一個(gè)ActionServlet,因此只能出現(xiàn)一對(duì)。
??????ActionServlet支持用戶類(lèi),只需要改變這里的<servlet-class>即可使用自定義類(lèi);
??????<servlet>/<init-param>標(biāo)簽中,config代表Struts配置文件所在的位置,這里需要注意 config/moduleA的寫(xiě)法,它代表著一個(gè)
模塊moduleA
以及支持該模塊的配置文件
??????<init-param>可以具有多個(gè),在這里可以保存一些客戶化的參數(shù),使用servlet.getInitParameter("paramname")的方式即可以取得。
??????<url-parttern>代表該servlet所要處理的URL,支持通配符,*.do代表所有以 .do 為后綴的請(qǐng)求都交由該servlet來(lái)處理
標(biāo)簽庫(kù)配置
<
taglib
>
????
<
taglib-uri
>
/WEB-INF/struts-html.tld
</
taglib-uri
>
????
<
taglib-location
>
/WEB-INF/struts-html.tld
</
taglib-location
>
</
taglib
>
??????<taglib-uri>:指定標(biāo)簽庫(kù)的相對(duì)或絕對(duì)URI地址,即在JSP頁(yè)面中引用標(biāo)簽時(shí),需與之對(duì)應(yīng);
??????<taglib-location>:指定標(biāo)簽庫(kù)的物理位置,即實(shí)際存放在什么地方。
歡迎文件配置
<
welcome-file-list
>
????
<
welcome-file
>
welcome.jsp
</
welcome-file
>
????
<
welcome-file
>
index.html
</
welcome-file
>
</
welcome-file-list
>
??????<welcome-file>:web應(yīng)用的歡迎文件,即只輸入了應(yīng)用的根目錄時(shí)響應(yīng)的文件,按先后順序查找;
??????該元素不能被配置成Action,如果有此需要的話則應(yīng)在這里配置一個(gè)JSP,并在JSP里面<logic:forward name="key" />進(jìn)行跳轉(zhuǎn)
錯(cuò)誤代碼配置
<
error-page
>
????
<
error-code
>
404
</
error-code
>
????
<
location
>
/common/404.html
</
location
>
</
error-page
>
??????<error-page>:指定web出錯(cuò)后的處理頁(yè)面,常見(jiàn)的錯(cuò)誤多是404:找不到目錄或文件,500:服務(wù)器內(nèi)部錯(cuò)誤;
??????<error-code>:指定需要處理的錯(cuò)誤號(hào);
??????<location>:指定出錯(cuò)后跳轉(zhuǎn)的處理頁(yè)面,這里可以設(shè)置JSP頁(yè)面。
異常捕獲配置
<
error-page
>
????
<
exception-type
>
javax.servlet.ServletException
</
exception-type
>
????
<
location
>
/common/system_error.jsp
</
location
>
</
error-page
>
??????捕獲的異常:
?????????RuntimeException 或 Error
?????????ServletException
?????????IOException
??????
2.Struts配置文件
?????????Struts配置的相關(guān)類(lèi)位于org.apache.struts.config包中,其中ModuleConfig接口是整個(gè)樹(shù)的頂點(diǎn),各種配置信息都放入ModuleConfig的實(shí)現(xiàn)類(lèi)中(由于存在著多模塊,因此會(huì)有多個(gè)實(shí)現(xiàn))。因此從ModuleConfig接口中可以取得各種配置信息,當(dāng)然需要先通過(guò)selectModule()來(lái)選擇需要操作的具體實(shí)現(xiàn)。
?????????還需要注意的一點(diǎn)就是在Struts配置文件里面DTD文件嚴(yán)格定義了各個(gè)元素出現(xiàn)的先后順序。
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>:配置應(yīng)用的數(shù)據(jù)源,可以包含多個(gè)<data-source>子標(biāo)簽
??????<data-source>:數(shù)據(jù)源的參數(shù),由于可以有多個(gè)數(shù)據(jù)源,因此<data-source>有一個(gè)屬性 key 用于區(qū)分,如果沒(méi)有 key 屬性,Struts將此做為缺省的數(shù)據(jù)源,該缺省數(shù)據(jù)源實(shí)際上也是有 key 值的,對(duì)應(yīng)于Globals.DATA_SOURCE_KEY的值,實(shí)際值是 "org.apache.struts.action.DATA_SOURCE"字串。
?????????:key 屬性的值不允許重復(fù),自行指定key屬性后,在Action中操作為 this.getDataSource(request,key),在其它地方則需要從ServletContext(application范圍)中用 (DataSource)getAttribute(key),
參數(shù)key的值與該屬性值完全相同
,因此在配置文件中該屬性應(yīng)該具有一定的區(qū)別性,如"datasource.other"等,以避免在引用時(shí)出現(xiàn)麻煩,另外如果在配置文件中各個(gè)data-source
都配置了key屬性
,那么在應(yīng)用
僅能通過(guò)對(duì)應(yīng)的key值進(jìn)行調(diào)用
,而
不會(huì)存在著缺省數(shù)據(jù)源
("org.apache.struts.action.DATA_SOURCE");
?????????:使用Myeclipse插件配DBCP時(shí)還需要手工修改
幾處
。
這里
form-beans元素(普通)
<
form-beans
>
????
<
form-bean?
name
="loginForm"
?type
="com.ddm.struts.addressbook.form.LoginForm"
?
/>
</
form-beans
>
??????<form-beans>:配置ActionForm,可以包含多個(gè)<form-bean>子標(biāo)簽
??????<form-bean>:ActionFormBean的參數(shù)。
?????????className:該標(biāo)簽對(duì)應(yīng)的配置類(lèi),Struts中與之對(duì)應(yīng)的類(lèi)是"org.apache.struts.config.FormBeanConfig",有需要時(shí)也可自行指定
?????????name:該ActionForm的唯一標(biāo)識(shí)符
?????????type:ActionForm的類(lèi)名
form-bean元素(動(dòng)態(tài))
<
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>:動(dòng)態(tài)的ActionForm的type="org.apache.struts.action.DynaActionForm"或子類(lèi);
??????<form-property>:配置ActionForm的成員屬性
?????????name:屬性名稱
?????????type:屬性類(lèi)型,必須是對(duì)象類(lèi)型。如果是Java簡(jiǎn)單數(shù)據(jù)類(lèi)型需要使用包裝類(lèi)
?????????inital:初始值,可缺省,與類(lèi)的屬性可以不用初始化的特性相同
??????另:這個(gè)動(dòng)態(tài)ActionForm還很有些名堂,現(xiàn)在只能逐步推進(jìn)了
這里
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>:配置
全局
異常處理,可以包含多個(gè)<exception>子標(biāo)簽,其配置方法與局部(Action)異常配置相同,但是作用域不同,類(lèi)似于Java類(lèi)的成員屬性與同名方法形參作用域之間的關(guān)系,對(duì)照想想setter就清楚了
??????<exception>:配置異常處理
?????????className:與<exception>標(biāo)簽對(duì)應(yīng)的配置類(lèi),缺省是"org.apache.struts.config.ExceptionConfig";
?????????handler:異常處理類(lèi),缺省是"org.apache.struts.action.ExceptionHandler";
?????????key:描述異常的消息在資源文件中的key;
?????????bundle:資源文件,可缺省;
?????????path:Struts捕獲到指定類(lèi)型的異常后,轉(zhuǎn)發(fā)的處理路徑;
?????????scope:ActionMessages實(shí)例的存放范圍,缺省為"request",還可取值"session";
?????????type:異常的類(lèi)型
這里
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,可包含多個(gè)<forward>子標(biāo)簽。
??????<forward>:配置forward
?????????className:與<forward>標(biāo)簽對(duì)應(yīng)的配置類(lèi),缺省為"org.apache.struts.action.ActionForward";
?????????contextRelative:缺省值為"false",表示path相對(duì)于應(yīng)用;當(dāng)取值為"true"時(shí),表示path屬性給出的是相對(duì)于當(dāng)前上下文的URL,如果配置用于子模塊之間切換的forward,則此項(xiàng)需設(shè)為"true";
?????????name:名稱;
?????????path:轉(zhuǎn)發(fā)的路徑,必須以"/"打頭
?????????redirect:缺省值為"false",表示請(qǐng)求轉(zhuǎn)發(fā),取值"true"時(shí),表示重定向,子模塊切換用的forward,此項(xiàng)需設(shè)為"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,可包含多個(gè)<action>子標(biāo)簽
??????<action>:配置Action
?????????className:標(biāo)簽對(duì)應(yīng)的配置類(lèi),缺省為"org.apache.struts.action.ActionMapping"
?????????attribute:name屬性所對(duì)應(yīng)的ActionForm實(shí)例的
key
,通過(guò)這個(gè)attribute操作它,如 (LoginForm)request.getAttribute("loginForm"); ;
?????????input:輸入U(xiǎn)RL,轉(zhuǎn)發(fā)到該 Action 時(shí)如果 ActionForm.validate()
檢驗(yàn)失敗,Action 將把請(qǐng)求轉(zhuǎn)發(fā)到該URL,
請(qǐng)看
?;
?????????name:與Action對(duì)應(yīng)的ActionForm的 name ,與<form-bean>標(biāo)簽的name屬性相匹配;
?????????path:Action的訪問(wèn)路徑,必須以"/"打頭,不需要后綴
?????????scope:與Action對(duì)應(yīng)的ActionForm的存在范圍,缺省是"session",可取值"request";
?????????validate:是否需要調(diào)用ActionForm的 validate() 方法進(jìn)行檢驗(yàn),缺省是"true",可取值"false",ActionForm將不會(huì)對(duì)提交的數(shù)據(jù)進(jìn)行表單校驗(yàn);
?????????parameter:可附加的參數(shù),在Action中可以用 mapping.getParameter() 來(lái)獲取;
?????????roles:指定允許調(diào)用該Action的安全角色,與容器設(shè)置的安全角色匹配,由容器來(lái)判斷;
?????????unknown:表示是否處理用戶發(fā)出的所有無(wú)效的Action URL,默認(rèn)為"false";
?????????type:Action的類(lèi)名;
?????????forward:指定轉(zhuǎn)發(fā)的URL,相當(dāng)于使用ForwardAction
?????????include:指定包含的URL,相當(dāng)于使用IncludeAction
?????????<exception>:Action局部異常捕獲,
參看<global-exceptions>小節(jié)
?????????<forward>:Action局部forward,
參看<global-forwards>小節(jié)
??????注意:
?????????<action>標(biāo)簽的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:標(biāo)簽的配置類(lèi),缺省為"org.apache.struts.config.ControllerConfig";
?????????contentType:指定響應(yīng)結(jié)果的內(nèi)容類(lèi)型和字符編碼,如果在Action和JSP中設(shè)置將會(huì)覆蓋掉該設(shè)置;
?????????locale:指定是否把 Locale 對(duì)象保存到session中,默認(rèn)值為"false";
?????????nochache:是否在客戶端緩存,缺省為"false",可選"true",struts將在響應(yīng)中加入特定的頭參數(shù)以防止頁(yè)面被緩存
?????????processorClass:指定負(fù)責(zé)處理 Request 的類(lèi),缺省為"org.apache.struts.action.RequestProcessor",如果有多模塊則應(yīng)在各模塊指定自己的處理類(lèi);
?????????bufferSize:指定上傳文件的輸入緩沖,默認(rèn)為"4096";
?????????tempDir:指定處理上傳文件的臨時(shí)工作目錄,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>:配置資源文件,這個(gè)標(biāo)簽與以上的幾個(gè)有點(diǎn)不同,他本身可以存在多個(gè)
?????????className:標(biāo)簽的配置類(lèi),缺省為"org.apache.struts.config.MessageResourcesConfig";
?????????factory:資源的工廠類(lèi),缺省為"org.apache.struts.util.PropertyMessageResourcesFactory";
?????????key:指定 Resource Bundle 存放在 ServletContext 中的 key,缺省為Globals.MESSAGES_KEY的值 "org.apache.struts.MESSAGE" ,可以自行指定key,使用如resource.bundle01加以區(qū)別,可通過(guò) (MessageResources)servletContext.getAttribute(key) 拿到,Struts提供的客戶化標(biāo)簽中常常可以見(jiàn)到一個(gè) bundle 屬性,該屬性即對(duì)應(yīng)于這里的 key 值;
?????????null:指定如何處理未知的消息,缺省為"true",返回空字串,可選"false",將返回類(lèi)似"???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屬性指定具體的插件類(lèi),struts配置文件中可配置多個(gè)插件,
初始化順序由書(shū)寫(xiě)順序決定
;
??????<set-property>:設(shè)置插件的屬性,可具有多個(gè),該插件類(lèi)必須實(shí)現(xiàn)與本屬性對(duì)應(yīng)的setter/getter,在Struts初始化時(shí)自動(dòng)set。
??????插件必須實(shí)現(xiàn) org.apache.struts.action.PlugIn 接口,該接口具有兩個(gè)方法:
public
?
void
?init(ActionServlet?servlet,ApplicationConfig?config)?
throws
?ServletException;
??????init方法將于Struts應(yīng)用啟動(dòng)時(shí)被調(diào)用,是一個(gè)初始化客戶資源的接口,而且由Struts傳入的參數(shù)也便于設(shè)置各種環(huán)境。
public
?
void
?destroy();
??????destroy方法于Struts應(yīng)用關(guān)閉時(shí)調(diào)用,是一個(gè)釋放客戶資源的接口。
??????
多應(yīng)用模塊的配置
??????多應(yīng)用模塊的劃分有助于應(yīng)用的并行開(kāi)發(fā),提高效率。
??????步驟:
?????????1.為每個(gè)子應(yīng)用創(chuàng)建單獨(dú)的 Struts 配置文件;
?????????2.在 web.xml 中配置每個(gè)子應(yīng)用的信息,參看
這里
;
?????????3.應(yīng)用中實(shí)現(xiàn)切換:<forward> 或 在<action>標(biāo)簽中使用 SwitchAction 來(lái)實(shí)現(xiàn)切換
新用戶注冊(cè)
刷新評(píng)論列表
只有注冊(cè)用戶
登錄
后才能發(fā)表評(píng)論。
網(wǎng)站導(dǎo)航:
博客園
IT新聞
Chat2DB
C++博客
博問(wèn)
管理
相關(guān)文章:
精通Struts筆記--04.01
精通Struts筆記--03.02
Struts國(guó)際化的快速演示
Struts中action之間控制權(quán)轉(zhuǎn)移的問(wèn)題
Struts中文問(wèn)題的暫時(shí)解決
DBCP數(shù)據(jù)源的配置問(wèn)題(Myeclipse)
精通Struts筆記--03.01
Digester類(lèi)的簡(jiǎn)單使用方法
web.xml中無(wú)法添加<taglib>標(biāo)簽問(wèn)題的解決
精通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
公告
果然是不能想得太好。
隨筆分類(lèi)
(4)
VB培訓(xùn)(4)
文章分類(lèi)
(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)
積分與排名
積分 - 60256
排名 - 871
最新評(píng)論
1.?re: 手工添加MyEclipse的XML文件模板[未登錄](méi)
請(qǐng)問(wèn),eclipse下面有沒(méi)有呢?現(xiàn)在想要實(shí)現(xiàn)eclipse的xml的模板進(jìn)行配置修改,簡(jiǎn)單說(shuō),就是把新建時(shí)候的名字作為其中的一個(gè)tag;找了很久沒(méi)有找到方法
--allen
2.?re: 第二章 Visual Basic 基礎(chǔ)語(yǔ)法
受益匪淺,多謝!
--yuleself
3.?re: 數(shù)字填空
評(píng)論內(nèi)容較長(zhǎng),點(diǎn)擊標(biāo)題查看
--去去去去去去去去去去去去去去去去去去去去去去去去去去去去去去去去去去去去去去去去去去去去去去去去去去
4.?re: Checkbox聯(lián)動(dòng)演示
dcdc
--dcd
5.?re: 利用TN5250NF下載檔案的自動(dòng)化處理
請(qǐng)教若密碼要?jiǎng)討B(tài)生成,是否有辦法呢?
謝謝
--江佳桂
i am ddm
主站蜘蛛池模板:
亚洲最大的成人网
|
日本免费久久久久久久网站
|
久久亚洲色一区二区三区
|
A片在线免费观看
|
亚洲视频一区二区三区四区
|
亚洲精品成人a在线观看
|
一区二区在线免费观看
|
亚洲欧美日韩一区二区三区
|
亚洲国产三级在线观看
|
成年人视频在线观看免费
|
91免费国产在线观看
|
国产亚洲综合精品一区二区三区
|
国产亚洲精品无码成人
|
免费高清在线影片一区
|
日本免费在线中文字幕
|
亚洲AV无码专区国产乱码不卡
|
亚洲色大成网站www永久一区
|
成人片黄网站A毛片免费
|
亚洲精品黄色视频在线观看免费资源
|
亚洲免费在线观看视频
|
中文字幕精品亚洲无线码一区
|
黄色片在线免费观看
|
中国性猛交xxxxx免费看
|
亚洲日产乱码一二三区别
|
久久久亚洲欧洲日产国码农村
|
国产精品成人四虎免费视频
|
亚洲av综合日韩
|
精品亚洲国产成AV人片传媒
|
亚洲高清偷拍一区二区三区
|
羞羞视频免费观看
|
亚洲日本香蕉视频观看视频
|
久久久久亚洲AV无码专区桃色
|
久久WWW免费人成人片
|
久久久久免费精品国产小说
|
一区二区三区免费在线视频
|
99亚偷拍自图区亚洲
|
亚洲a在线视频视频
|
亚洲色无码专区在线观看
|
全部免费毛片免费播放
|
在线观看人成视频免费
|
免费精品国产自产拍在线观看图片
|