﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-爱睡觉的小耗子-随笔分类-Struts</title><link>http://www.blogjava.net/Harriet/category/27476.html</link><description>                   ——等待飘雪的日子...努力,努力,再努力!</description><language>zh-cn</language><lastBuildDate>Fri, 23 Nov 2007 11:25:26 GMT</lastBuildDate><pubDate>Fri, 23 Nov 2007 11:25:26 GMT</pubDate><ttl>60</ttl><item><title> Struts-config.xml配置文件讲解</title><link>http://www.blogjava.net/Harriet/archive/2007/11/22/162432.html</link><dc:creator>Harriet</dc:creator><author>Harriet</author><pubDate>Thu, 22 Nov 2007 10:11:00 GMT</pubDate><guid>http://www.blogjava.net/Harriet/archive/2007/11/22/162432.html</guid><wfw:comment>http://www.blogjava.net/Harriet/comments/162432.html</wfw:comment><comments>http://www.blogjava.net/Harriet/archive/2007/11/22/162432.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/Harriet/comments/commentRss/162432.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Harriet/services/trackbacks/162432.html</trackback:ping><description><![CDATA[Struts的核心是struts-config.xml配置文件，在这个文件里描述了所有的Struts组件。在这里包括配置主要的组件及次要的组件，下面是struts-config.xml包含主要元素的内容：<br />
<br />
一、&nbsp;&nbsp;&nbsp;&nbsp;struts-config.xml的主要元素：<br />
&lt;?xml version=&#8221;1.0&#8221; encoding=&#8221;ISO-8859-1&#8221;?&gt;<br />
&lt;!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.1//EN"<br />
"http://jakarta.apache.org/struts/dtds/struts-config_1_1.dtd"&gt;<br />
&lt;struts-config&gt;<br />
&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&lt;data-sources&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;data-source&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/data-source&gt;<br />
&nbsp;&nbsp;&nbsp;&lt;/data-sources&gt;<br />
<br />
&nbsp;&nbsp;&nbsp;&lt;form-beans&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;form-bean / &gt;<br />
&nbsp;&nbsp;&nbsp;&lt;/form-beans&gt;<br />
<br />
&nbsp;&nbsp;&nbsp;&lt;global-forwards&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;forward / &gt;<br />
&nbsp;&nbsp;&nbsp;&lt;/global-forwards&gt;<br />
<br />
&nbsp;&nbsp;&nbsp;&lt;action-mappings&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;action / &gt;<br />
&nbsp;&nbsp;&nbsp;&lt;/action-mappings&gt;<br />
<br />
&nbsp;&nbsp;&nbsp;&lt;controller / &gt;<br />
<br />
&nbsp;&nbsp;&nbsp;&lt;message-resources / &gt;<br />
<br />
&nbsp;&nbsp;&nbsp;&lt;plug-in /&gt;<br />
<br />
&lt;/struts-config&gt;<br />
<span style="color: red;"><span style="color: #ed68ff;">
注意：以上各元素的顺序是非常重要的，你的struts-config.xml配置文件必须按照这个顺序进行配置，否则在你的容器启动的时候就会出错。</span></span><br />
<br />
二、&nbsp;&nbsp;&nbsp;&nbsp;struts-config.xml的子元素：<br />
1．&lt;icon / &gt;子元素<br />
&nbsp;&nbsp;&nbsp;它包含&lt;small-icon / &gt;及&lt;large-icon /
&gt;，它的作用是图形化其父元素，&lt;small-icon/&gt;的内容是一个16x16的图像文件，而&lt;large-
icon/&gt;的内容是一个32x32的图像文件。如下例子：<br />
&nbsp;&nbsp;&nbsp;&lt;icon&gt;<br />
&lt;small-icon&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/images/smalllogo.gif<br />
&lt;/small-icon&gt;<br />
&lt;large-icon&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;/images/largelogo.gif<br />
&lt;/large-icon&gt;<br />
&lt;/icon&gt;<br />
2．&lt;display-name / &gt;子元素<br />
&nbsp;&nbsp;&nbsp;它提供对父元素的短文字（short textual）描述信息，如下：<br />
&nbsp;&nbsp;&nbsp;&lt;display-name&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;short textual discription of its parent element<br />
&nbsp;&nbsp;&nbsp;&lt;/display-name&gt;<br />
3．&lt;description / &gt;子元素<br />
&nbsp;&nbsp;&nbsp;它提供对父元素的完全（full-length textual）的描述信息，如下：<br />
&lt;description&gt;<br />
full-length textual discription of its parent element<br />
&lt;/description&gt;<br />
4．&lt;set-property / &gt;子元素<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;它用来设置它的父元素中设定的JavaBean的属性值，它一般用在指定的GenericDataSource 属性，扩展的ActionMappings以及扩展的 global forwards。如下：<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;set-property <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;property="name of bean property"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
value="value of bean property" /&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;例如：<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;set-property property="driverClass" value="org.gjt.mm.mysql.Driver" /&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;set-property property="user" value="admin"/&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;set-property property="maxCount" value="4"/&gt;<br />
&lt;set-property property="minCount" value="2"/&gt; <br />
&lt;set-property property="password" value=""/&gt; <br />
&lt;set-property property="url" value="jdbc:mysql://localhost:3306/struts"/&gt;<br />
<br />
三、&nbsp;&nbsp;&nbsp;&nbsp;配置JDBC数据源<br />
其配置形式如下：<br />
&lt;data-sources&gt;<br />
&lt;data-source&gt;<br />
&lt;set-property property="driverClass" value="fully qualified path of JDBC driver"/&gt;<br />
&lt;set-property property="url" value="data source URL"/&gt;<br />
&lt;set-property property=&#8221;mincount&#8221; value="the minimum number of connections to open"/&gt;<br />
&lt;set-property property="password" value="the password used to create connections"/&gt;<br />
&lt;set-property property="user" value="the username used to create connections"/&gt;<br />
&lt;/data-source&gt;<br />
&lt;/data-sources&gt;<br />
&lt;data-source&gt;的属性及其描述信息如下：<br />
属&nbsp;&nbsp;性&nbsp;&nbsp;&nbsp;&nbsp;描 述 信 息<br />
Key&nbsp;&nbsp;&nbsp;&nbsp;绑定在ServletContext上的DataSource实例的索引键，若不设定则缺省为Action.DATA_SOURCE_KEY，如果在应用程序中有多于一个的DataSource，则必须设置Key的值。<br />
DriverClass&nbsp;&nbsp;&nbsp;&nbsp;所用的JDBC驱动类(必须的)如：com.microsoft.jdbc.sqlserver.SQLServerDriver<br />
url&nbsp;&nbsp;&nbsp;&nbsp;所用的JDBC的URL(必须的)如：jdbc:microsoft:sqlserver://xg088:1433<br />
MaxCount&nbsp;&nbsp;&nbsp;&nbsp;同时打开的最大连结数，缺省值为2(可选的)<br />
MinCount&nbsp;&nbsp;&nbsp;&nbsp;同时打开的最小连结数，缺省值为1(可选的)<br />
User&nbsp;&nbsp;&nbsp;&nbsp;连结到数据库的用户名(必须的)<br />
Password&nbsp;&nbsp;&nbsp;&nbsp;连结到数据库的密码(必须的)<br />
Description&nbsp;&nbsp;&nbsp;&nbsp;关于DataSource的描述信息(可选的)<br />
ReadOnly&nbsp;&nbsp;&nbsp;&nbsp;如果设为true，则表示该连结是只读的，缺省为false。(可选的)<br />
LoginTimeout&nbsp;&nbsp;&nbsp;&nbsp;创建连结的最大允许时间，以秒为单位。(可选的)<br />
AutoCommit&nbsp;&nbsp;&nbsp;&nbsp;如果为true，则每次execute之后会强制回滚。缺省为true。(可选的)<br />
举例说明：<br />
&lt;data-sources&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&lt;data-source&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;set-property property=&#8221;key&#8221; value=&#8221; value="WILEY_DATA_SOURCE" /&gt;<br />
&lt;set-property property="driverClass" value="org.gjt.mm.mysql.Driver" /&gt;<br />
&lt;set-property property="url" value="jdbc:mysql://localhost/wileyusers" /&gt;<br />
&lt;set-property property="maxCount" value="5"/&gt;<br />
&lt;set-property property="minCount" value="1"/&gt;<br />
&lt;set-property property="user" value="sa"/&gt;<br />
&lt;set-property property="password" value="yourpassword"/&gt;<br />
&lt;/data-source&gt;<br />
&lt;/data-sources&gt;<br />
<br />
四、&nbsp;&nbsp;&nbsp;&nbsp;配置FormBean<br />
&lt;form-bean / &gt;用来定义将要绑定到Action的FormBean的实例。语法如下：<br />
&lt;form-beans&gt;<br />
&lt;form-bean name="name used to uniquely identify a FormBean"<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;type=&#8221;fully qualified class name of FormBean"/&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/form-beans&gt;<br />
例：<br />
&lt;form-beans&gt;<br />
&lt;form-bean name="lookupForm" type="wiley.LookupForm" /&gt;<br />
&lt;/form-beans&gt;<br />
<br />
五、&nbsp;&nbsp;&nbsp;&nbsp;配置全局转发<br />
全局转发可以定义几个&lt;forward/&gt;子元素，struts首先会在&lt;action-mappings&gt;元素中找对应的&lt;forward&gt;，若找不到，则到全局转发配置中找。语法如下：<br />
&lt;global-forwards&gt;<br />
&lt;forward name="unique target identifier" <br />
path="context-relative path to targetted resource "/&gt;<br />
&lt;/global-forwards&gt;<br />
除了name及path属性之外，还有一个redirect属性，如果redirect设为true的时候，则用
HttpServletResponse.sendRedirect()方法，否则用RequestDispatcher.forward()方法，缺省
为false。<br />
注：如果为true，则用HttpServletResponse.sendRedirect()方法，此时存储在原来的HttpServletRequest中的值将会丢失。<br />
例子：<br />
&lt;global-forwards&gt;<br />
&lt;forward name="success" path="/welcome.jsp"/&gt;<br />
&lt;forward name="failure" path="/index.jsp"/&gt;<br />
&lt;/global-forwards&gt;<br />
六、&nbsp;&nbsp;&nbsp;&nbsp;配置&lt;action-mappings&gt;<br />
它可以定义几个&lt;action / &gt;子元素，它主要是定义Action实例到ActionServlet类中，语法如下：<br />
&lt;action-mappings&gt;<br />
&lt;action path="context-relative path mapping action to a request"<br />
type="fully qualified class name of the Action class"<br />
name="the name of the form bean bound to this Action"&gt;<br />
&lt;forward name="forwardname1" path="context-relative path"/&gt;<br />
&lt;forward name="forwardname2" path="context-relative path"/&gt;<br />
&lt;/action&gt;<br />
&lt;/action-mappings&gt;<br />
&lt;action/&gt;属性及其描述信息如下：<br />
属&nbsp;&nbsp;性&nbsp;&nbsp;&nbsp;&nbsp;描 述 信 息<br />
Path&nbsp;&nbsp;&nbsp;&nbsp;在浏览器的URL中输入的字符(必须的)<br />
Type&nbsp;&nbsp;&nbsp;&nbsp;连结到本映射的Action的全称(可选的)<br />
Name&nbsp;&nbsp;&nbsp;&nbsp;与本操作关联的Action Bean在&lt;form-bean/&gt;中定义name名(可选的)<br />
Scope&nbsp;&nbsp;&nbsp;&nbsp;指定ActionForm Bean的作用域(session和request)，缺省为session。(可选的)<br />
Input&nbsp;&nbsp;&nbsp;&nbsp;当Bean发生错误时返回的控制。(可选的)<br />
ClassName&nbsp;&nbsp;&nbsp;&nbsp;指定一个调用这个Action类的ActionMapping类的全名。缺省用org.apache.struts.action.ActionMapping，(可选的)<br />
Forward&nbsp;&nbsp;&nbsp;&nbsp;指定处理相应请求所对应的JSP页面。(可选的)<br />
Include&nbsp;&nbsp;&nbsp;&nbsp;如果没有forward的时候，它起forward的作用。(可选的)<br />
Validate&nbsp;&nbsp;&nbsp;&nbsp;若为true，则会调用ActionForm的validate()方法，否则不调用，缺省为true。（可选的）<br />
例子：<br />
&lt;action-mappings&gt;<br />
&lt;action path="/lookupAction" <br />
type="wiley.LookupAction"<br />
name="LookupForm"<br />
scope="request"<br />
validate="true"<br />
input="/index.jsp"&gt;<br />
&lt;forward name="success" path="/quote.jsp"/&gt;<br />
&lt;forward name="faliue" path="/index.jsp"/&gt;<br />
&lt;/action&gt;<br />
&lt;/action-mappings&gt;<br />
<br />
七、&nbsp;&nbsp;&nbsp;&nbsp;配置RequestProcessor<br />
在struts-config.xml文件中用&lt;controller/&gt;子元素来定义RequestProcessor，其语法格式如下：<br />
&lt;controller processorClass="fully qualified class name" /&gt;<br />
&lt;controller /&gt;元素属性及其描述信息如下：<br />
属&nbsp;&nbsp;性&nbsp;&nbsp;&nbsp;&nbsp;描&nbsp;&nbsp;述<br />
processorClass&nbsp;&nbsp;&nbsp;&nbsp;指定自定义的RequestProcessor类的全名<br />
BufferSize&nbsp;&nbsp;&nbsp;&nbsp;指定用来下载所用的缓存大小。缺省是4096字节。<br />
contentType&nbsp;&nbsp;&nbsp;&nbsp;定义response文本类型，缺省是text/html<br />
Debug&nbsp;&nbsp;&nbsp;&nbsp;定义当前系统的除错级别，缺省是0<br />
Locale&nbsp;&nbsp;&nbsp;&nbsp;如果是true，则在用户的session中存放Locale对象，缺省为true<br />
maxFileSize&nbsp;&nbsp;&nbsp;&nbsp;指定下载文件最大的大小。缺省是250M<br />
multipartClass&nbsp;&nbsp;&nbsp;&nbsp;指定去代替org.apache.struts.upload.DiskMultipartRequestHandler类的类的全名。<br />
Nocache&nbsp;&nbsp;&nbsp;&nbsp;如果是true，则会关闭每个response的缓存功能。缺省是false<br />
TempDir&nbsp;&nbsp;&nbsp;&nbsp;指定上载文件所用的临时目录。缺省值由容器决定<br />
例子：<br />
① &lt;controller processorClass="wiley.WileyRequestProcessor" /&gt;<br />
② &lt;controller<br />
&nbsp;&nbsp;&nbsp;&nbsp;contentType="text/html;charset=UTF-8"<br />
&nbsp;&nbsp;&nbsp;&nbsp;debug="3"<br />
&nbsp;&nbsp;&nbsp;&nbsp;locale="true"<br />
&nbsp;&nbsp;&nbsp;&nbsp;nocache="true"<br />
&nbsp;&nbsp;&nbsp;&nbsp;processorClass="org.apache.struts.action.RequestProcessor"/&gt;<br />
八、&nbsp;&nbsp;&nbsp;&nbsp;配置Message Resources<br />
在struts-config.xml文件中用&lt;message-resources /&gt;元素来定义消息资源。其语法如下：<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;message-resources&nbsp;&nbsp;parameter="wiley.ApplicationResources"/&gt;<br />
&lt;message-resources /&gt;元素属性及其描述信息如下：<br />
属&nbsp;&nbsp;性&nbsp;&nbsp;&nbsp;&nbsp;描&nbsp;&nbsp;述<br />
Parameter&nbsp;&nbsp;&nbsp;&nbsp;给定资源文件全名<br />
ClassName&nbsp;&nbsp;&nbsp;&nbsp;定义处理消息资源的类名的全名，缺省是org.apache.struts.config.MessageResourcesConfig<br />
Factory&nbsp;&nbsp;&nbsp;&nbsp;定义MessageResourcesFactory类的全名，缺省是org.apache.struts.util.property.MessageResourcesFacotry<br />
Key&nbsp;&nbsp;&nbsp;&nbsp;定义绑定在这个资源包中的ServletContext的属性主键，缺省值是Action.MESSAGES_KEY.<br />
Null&nbsp;&nbsp;&nbsp;&nbsp;如果为true，则找不到消息key时，则返回null，缺省是true.<br />
例子：<br />
① &lt;message-resources parameter="wiley.ApplicationResources"/&gt;<br />
② &lt;message-resources<br />
&nbsp;&nbsp;&nbsp;&nbsp;parameter="StorefrontMessageResources"<br />
&nbsp;&nbsp;&nbsp;&nbsp;null="false"/&gt;<br />
&lt;message-resources<br />
&nbsp;&nbsp;&nbsp;&nbsp;key="IMAGE_RESOURCE_KEY"<br />
&nbsp;&nbsp;&nbsp;&nbsp;parameter="StorefrontImageResources"<br />
&nbsp;&nbsp;&nbsp;&nbsp;null="false"/&gt;<br />
注意：设定key的目的如下：<br />
&lt;html:img altKey="navbar.home.image.alt" bundle="IMAGE_RESOURCE_KEY"
pageKey="navbar.home.image" width="125" height="15" border="0"/&gt;<br />
这里说明要到StorefrontImageResources.properties资源文件中找主键值是&#8221;navbar.home.image&#8221;所对应的值。<br />
这里StorefrontImageResources.properties的内容如下：<br />
&#8230;&#8230;<br />
navbar.home.image=/images/home.gif<br />
navbar.home.image.alt=Home<br />
&#8230;&#8230;<br />
此处navbar.home.image.alt说明的和&lt;img alt=&#8221;Home&#8221;&#8230;&#8230;/&gt;一样。<br />
九、&nbsp;&nbsp;&nbsp;&nbsp;配置Plug-in<br />
配置Plug-in如下：<br />
&lt;plug-in className="wiley.WileyPlugin"/&gt;<br />
也可如下：<br />
&lt;plug-in className="com.oreilly.struts.storefront.service.memory.StorefrontMemoryDatabasePlugIn"&gt;<br />
&nbsp;&nbsp;&lt;set-property property="pathname" value="/WEB-INF/database.xml"/&gt;<br />
&lt;/plug-in&gt;<br />
<img src ="http://www.blogjava.net/Harriet/aggbug/162432.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Harriet/" target="_blank">Harriet</a> 2007-11-22 18:11 <a href="http://www.blogjava.net/Harriet/archive/2007/11/22/162432.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>