📄 building_controller.html
字号:
</struts-config>
</pre>
<p>
关于如何获取这个数据源,参阅<a href="building_model.html#databases">访问关系数据库</a>这一节。
</p>
</blockquote></td></tr></table><a name="dd_config"></a><table width="100%" cellpadding="5" cellspacing="5" border="0"><tr><td bgcolor="#023264"><font size="+1" face="arial,helvetica,sanserif" color="#ffffff"><strong>4.5 Web 程序发布描述</strong></font></td></tr><tr><td><blockquote>
<p>
设置你的程序的最后一步是配置程序的发布描述(保存在<code>WEB-INF/web.xml</code>文件中)来包含所有需要的Struts部件。用示例程序中的发布描述作为一个指南,我们发现下列条目需要创建或者修改。
</p>
<a name="dd_config_servlet"></a><table width="100%" cellpadding="5" cellspacing="5" border="0"><tr><td bgcolor="#023264"><font size="+1" face="arial,helvetica,sanserif" color="#ffffff"><strong>4.5.1 配置Action servlet实例</strong></font></td></tr><tr><td><blockquote>
<p>
增加一个条目来定义action servlet自己,包含合适的初始化参数。这样的一个条目可能是这样的:
</p>
<pre>
<servlet>
<servlet-name>action</servlet-name>
<servlet-class>
org.apache.struts.action.ActionServlet
</servlet-class>
<init-param>
<param-name>application</param-name>
<param-value>
org.apache.struts.example.ApplicationResources
</param-value>
</init-param>
<init-param>
<param-name>config</param-name>
<param-value>
/WEB-INF/struts-config.xml
</param-value>
</init-param>
<init-param>
<param-name>debug</param-name>
<param-value>2</param-value>
</init-param>
<init-param>
<param-name>mapping</param-name>
<param-value>
org.apache.struts.example.ApplicationMapping
</param-value>
</init-param>
<load-on-startup>2</load-on-startup>
</servlet>
</pre>
<p>
controller servlet支持的初始化参数如下所示。(你也可以在<a href="../api/index.html">Javadocs</a>中查找ActionServlet类得到详细信息。)方括号表示如果你没有给出初始值时使用的默认值。
<ul>
<li><strong>application</strong> - 程序的资源包的基础类的Java类名。 [NONE]</li>
<li><strong>bufferSize</strong> - 处理文件上传的输入缓冲区大小。[4096]</li>
<li><strong>config</strong> - 指向包含我们的配置信息的XML资源的相对于上下文的路径。[/WEB-INF/struts-config.xml]</li>
<li><strong>content</strong> - 默认输出响应的的文档类性和字符集编码。它可以被一个转移到的servlet或者JSP重载。[text/html]</li>
<li><strong>debug</strong> - 这个servlet的debug信息详细程度,它控制多少信息应该被记录。[0]</li>
<li><strong>detail</strong> - 我们在<code>initMapping()</code>中使用的Digester的debug信息详细程度,它输出到System.out而非servlet的log。[0]</li>
<li><strong>factory</strong> - 用于创建程序的<code>MessageResources</code>对象的<code>MessageResourcesFactory</code>的类名。
[org.apache.struts.util.PropertyMessageResourcesFactory]</li>
<li><strong>formBean</strong> - ActionFormBean继承的根的Java类名。[org.apache.struts.action.ActionFormBean].</li>
<li><strong>forward</strong> - ActionForwarder继承的根的Java类名。 [org.apache.struts.action.ActionForward].
两个你可能选择的类是:
Two convenient classes you may wish to use are:
<ul>
<li><em>org.apache.struts.action.ForwardingActionForward</em> -
<code>org.apache.struts.action.ActionForward</code>的子类,它的 <code>redirect</code>属性被默认置为<code>false</code>(和Actionforward 默认值一样)。</li>
<li><em>org.apache.struts.action.RedirectingActionForward</em> -
<code>org.apache.struts.action.ActionForward</code>的子类,它的<code>redirect</code>属性被默认置为<code>true</code>。</li>
</ul></li>
<li><strong>locale</strong> - 如果被置为 <code>true</code>, 并且有一个用户session,如果没有Locale对象的话,放置一个合适的<code>java.util.Locale</code> object (用<code>Action.LOCALE_KEY</code>作为标识关键字)到用户session中去。[true]</li>
<li><strong>mapping</strong> - ActionMapping继承的根的Java类名。[org.apache.struts.action.ActionMapping].
两个你可能选择的类是:
<ul>
<li><em>org.apache.struts.action.RequestActionMapping</em> - <code>org.apache.struts.action.ActionMapping</code> 的子类,<code>scope</code>属性默认是"request"。</li>
<li><em>org.apache.struts.action.SessionActionMapping</em> - of <code>org.apache.struts.action.ActionMapping</code> 的子类,<code>scope</code>属性默认是"session"(和ActionMapping默认值一样)。</li>
</ul></li>
<li><strong>maxFileSize</strong> - 一次上传文件可能的最大大小(单位是字节)。可以在数字后面加上"K","M',或者"G", 代表千字节,兆字节和千兆字节。[250M]</li>
<li><strong>multipartClass</strong> - 用于文件上传的MultipartRequestHandler 的实现的完整Java类名。[org.apache.struts.upload.DiskMultipartRequestHandler]
</li>
<li><strong>nocache</strong> - 如果设置为<code>true</code>, 在每一个响应中加上HTTP头信息来访置我们的任何响应或者转移被浏览器缓存。[false]</li>
<li><strong>null</strong> - 如果设置为<code>true</code>, 如果(资源)信息的关键字无法找到,返回一个<code>null</code>。否则,返回一个带有此关键字的错误信息。[true]</li>
<li><strong>tempDir</strong> - 文件上传时的临时目录。 [这个web程序的servlet上下文属性指定的工作目录]</li>
<li><strong>validate</strong> - 我们是否适用性的配置文件格式?[true]</li>
<li><strong>validating</strong> - 我们是否使用一个带有校验的XML 解释器来处理配置文件(强烈建议)? [true]</li>
</ul>
</blockquote></td></tr></table>
<a name="dd_config_mapping"></a><table width="100%" cellpadding="5" cellspacing="5" border="0"><tr><td bgcolor="#023264"><font size="+1" face="arial,helvetica,sanserif" color="#ffffff"><strong>4.5.2 配置Action Servlet 映射</strong></font></td></tr><tr><td><blockquote>
<p>
<strong>注意:</strong> 这一段中的材料不是针对Struts的。配置servlet映射是在Java Servlet规格书中定义的。这一段描述了最普通的针对配置一个Struts程序的方法。
</p>
<p>
又两种一般的方法来配置一个URL成为被controller servlet处理的URL - 前缀匹配和后缀匹配。每种方法相应的配置条目会在下面描述。
</p>
<p>
前缀匹配意味着你希望所有的以某一个特定值开头的URL(在上下文路径部分之后)都被送往这个servlet。这样的条目可能是这样:
</p>
<pre>
<servlet-mapping>
<servlet-name>action</servlet-name>
<url-pattern>/execute/*</url-pattern>
</servlet-mapping>
</pre>
<p>
就是说前面我们提到过的匹配<code>/logon</code>的URI请求会被这样描述:
<pre>
http://www.mycompany.com/myapplication/execute/logon
</pre>
<p>
这里<code>/myapplication</code>是你的程序部署的上下文路径。
</p>
<p>
后缀匹配映射,相反,在URL以某一个特定的字符串结尾时把URI请求匹配到action servlet.举个例子,JSP处理servlet对应到<code>*.jsp</code>,这样,每当一个jsp页面被访问,它都会被调用进行处理。为了使用<code>*.do</code>后缀名(意思是“做什么”),映射条目可能是这样的:
</p>
<pre>
<servlet-mapping>
<servlet-name>action</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
</pre>
<p>
前面我们提到过的匹配<code>/logon</code>的URI请求会被这样描述:
</p>
<pre>
http://www.mycompany.com/myapplication/logon.do
</pre>
</blockquote></td></tr></table>
<a name="dd_config_taglib"></a><table width="100%" cellpadding="5" cellspacing="5" border="0"><tr><td bgcolor="#023264"><font size="+1" face="arial,helvetica,sanserif" color="#ffffff"><strong>4.5.3 配置 Struts 标签库</strong></font></td></tr><tr><td><blockquote>
<p>
下一步,你必须增加一个条目来定义Struts标签库。当前Struts打包了4个标签库。
</p>
<p>
struts-bean 标签库包含访问bean和它们的属性的有用的标签,也包含利用这些访问定义新的bean以便在页面剩下的部分用脚本中的变量和页面范围的属性来访问。还有用request coolie,header和parameter的值来创建bean的便利机制。
</p>
<p>
struts-html 标签库包含用户创建struts输入表单,还有其他通常很在创建基于HTML的用户界面上很有用的标签。
</p>
<p>
struts-logic 标签库包括用于有条件的生成输出代码,循环整个对象容器来输出重复的文本,还有程序流管理。
</p>
<p>
struts-template 标签库包含定义了一个模版机制的标签。
</p>
<p>
下面是在你的程序中如何定义所有这些标签。在实际工作中你可以只指定你的程序要用到的。
</p>
<pre>
<taglib>
<taglib-uri>
/WEB-INF/struts-bean.tld
</taglib-uri>
<taglib-location>
/WEB-INF/struts-bean.tld
</taglib-location>
</taglib>
<taglib>
<taglib-uri>
/WEB-INF/struts-html.tld
</taglib-uri>
<taglib-location>
/WEB-INF/struts-html.tld
</taglib-location>
</taglib>
<taglib>
<taglib-uri>
/WEB-INF/struts-logic.tld
</taglib-uri>
<taglib-location>
/WEB-INF/struts-logic.tld
</taglib-location>
</taglib>
<taglib>
<taglib-uri>
/WEB-INF/struts-template.tld
</taglib-uri>
<taglib-location>
/WEB-INF/struts-template.tld
</taglib-location>
</taglib>
</pre>
<p>
这告诉JSP系统到哪里去寻找标签库的定义(在你的程序的WEB-INF目录,而不是Internet上的某处)。
</p>
</blockquote></td></tr></table>
<a name="config_add"></a><table width="100%" cellpadding="5" cellspacing="5" border="0"><tr><td bgcolor="#023264"><font size="+1" face="arial,helvetica,sanserif" color="#ffffff"><strong>4.5.4 把Struts部件增加到你的程序中</strong></font></td></tr><tr><td><blockquote>
<p>
为了使用Struts,你必须拷贝你需要的.tld文件到你的<code>WEB-INF</code>目录,并且拷贝<code>struts.jar</code>(和其它所有的<code>commons-*.jar</code>文件)到你的<code>WEB-INF/lib</code>目录。
</p>
<p>
下一章: <a href="resources.html">Struts 资源</a>
</p>
</blockquote></td></tr></table>
</blockquote></td></tr></table>
</body></td></tr><tr><td colspan="2"><hr></td></tr><tr><td colspan="2"><div align="center"><font size="-1" color="#023264"><em>
Copyright (c) 2000-2002, Apache Software Foundation
</em></font></div><img border="0" align="right" src="../images/struts-power.gif"></td></tr></table></body></html>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -