📄 《struts 入门教学》-java中文站(www_java-cn_com).htm
字号:
API 文档 以获得关于Digester更多的信息。 <BR>开发者的责任是创建一个叫做 action.xml
的XML文件,并且把它放在你的应用程序的WEB-INF目录中。(注意这个文件并不需要
DTD,因为实际使用的属性对于不同的用户可以是不同的)最外面的XML元素必须是<action-mappings>,在这个元素之中是嵌入的0个或更多的
<action> 元素 -- 每一个对应于你希望定义的一个映射。 <BR><BR>来自例子程序的 action.xml
文件包括“注册”功能的以下映射条目,我们用来说明这个需求: <BR><BR><BR>代码:
<BR><BR><BR><action-mappings> <BR><BR><forward name="logon"
path="/logon.jsp"/> <BR><BR><action path="/logon"
<BR>actionClass="org.apache.struts.example.LogonAction"
<BR>formAttribute="logonForm"
<BR>formClass="org.apache.struts.example.LogonForm"
<BR>inputForm="/logon.jsp"> <BR><forward name="success"
path="/mainMenu.jsp"/> <BR></action>
<BR><BR></action-mappings> <BR><BR><BR><BR>就象你所看到的,这个映射匹配路径 /logon
(实际上,因为例子程序使用扩展匹配,你在一个JSP页面指定的请求的URI结束于/logon.do)。当接收到一个匹配这个路径的请求时,一个
LogonAction 类的实例将被创建(仅仅在第一次)并被使用。controller servlet将在关键字 logonForm
下查找一个session范围的bean,如果需要就为指定的类创建并保存一个bean。 <BR>这个 action
元素也定义了一个逻辑名“success”,它在 LogonAction 类中被用来标识当一个用户成功注册时使用的页面。象这样使用一个逻辑名允许将
action 类隔离于任何由于重新设计位置而可能发生的页面名改变。 <BR><BR>这是第二个在任何 action 之外宣告的 forward
元素,这样它就可以被所有的action全局地获得。在这个情况下,它为注册页面定义了一个逻辑名。当你调用 mapping.findForward()
时在你的 action 代码中,Struts首先查找这个action本地定义的逻辑名。如果没有找到,Struts会自动为你查找全局定义的逻辑名。
<BR><BR>4.5 Web应用程序展开描述符
<BR>设置应用程序最后的步骤是配置应用程序展开描述符(保存在文件WEB-INF/web.xml中)以包括所有必需的Struts组件。作为一个指南使用例子程序的展开描述符,我们看到下面的条目需要被创建或修改。
<BR>4.5.1 配置Action Servlet实例 <BR>添加一个条目定义action
servlet本身,同时包括适当的初始化参数。这样一个条目看起来象是这样: <BR><BR><BR>代码:
<BR><BR><BR><servlet>
<BR><servlet-name>action</servlet-name>
<BR><servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
<BR><init-p <BR>aram>
<BR><param-name>application</param-name>
<BR><param-value>org.apache.struts.example.ApplicationResources</param-value>
<BR></init-param> <BR><init-param>
<BR><param-name>config</param-name>
<BR><param-value>/WEB-INF/action.xml</param-value>
<BR></init-param> <BR><init-param>
<BR><param-name>debug</param-name>
<BR><param-value>2</param-value> <BR></init-param>
<BR><init-param> <BR><param-name>mapping</param-name>
<BR><param-value>org.apache.struts.example.ApplicationMapping</param-value>
<BR></init-param>
<BR><load-on-startup>2</load-on-startup> <BR></servlet>
<BR><BR><BR><BR><BR>controller servlet支持的初始化参数在下面描述,拷贝自 ActionServlet 类的
Javadocs 。方括号描述如果你没有为那个初始化参数提供一个值时假设的缺省值。 <BR>application -
应用程序资源包基类的Java类名。[NONE]. <BR>config -
包含配置信息的XML资源的上下文相关的路径。[/WEB-INF/action.xml] <BR>debug -
这个servlet的调试级别,它控制记录多少信息到日志中。[0] <BR>digester - 我们在 initMapping()
中利用的Digester的调试级别,它记录到System.out而不是servlet的日志中。[0] <BR>forward -
使用的ActionForward实现的Java类名。[org.apache.struts.action.ActionForward]
<BR>mapping -
使用的ActionMapping实现的Java类名。[org.apache.struts.action.ActionMappingBase]
<BR>nocache - 如果设置为 true,增加HTTP头信息到所有响应中使浏览器对于生成或重定向到的任何响应不做缓冲。[false]
<BR>null - 如果设置为 true,设置应用程序资源使得如果未知的消息关键字被使用则返回
null。否则,一个包括不欢迎的消息关键字的出错消息将被返回。[true] <BR>4.5.2 配置Action Servlet映射
<BR>有两种通常的方法来定义将被controller servlet处理的URL --
前缀匹配和扩展匹配。每种方法的一个适当的映射条目将在下面被描述。
<BR>前缀匹配意思是你想让所有以一个特殊值开头(在上下文路径部分之后)的URL传递给这个servlet。这样一个条目看起来可以象是这样:
<BR>代码: <BR><BR><servlet-mapping>
<BR><servlet-name>action</servlet-name>
<BR><url-pattern>/execute/*</url-pattern>
<BR></servlet-mapping> <BR><BR><BR>它意味着一个匹配前面描述的 /logon
路径的请求的URL看起来象是这样: <BR>http://www.mycompany.com/myapplication/execute/logon
<BR>这里 /myapplicationis 是你的应用程序展开所在的上下文路径。
<BR>另一方面,扩展映射基于URL以一个跟着定义的一组字符的句点结束的事实而将URL匹配到action servlet
。例如,JSP处理servlet映射到 *.jsp 模式这样它在每个JSP页面请求时被调用。为了使用 *.do
扩展(它意味着“做某件事”)映射条目看起来应该象是这样: <BR>代码: <BR><BR><servlet-mapping>
<BR><servlet-name>action</servlet-name>
<BR><url-pattern>*.do</url-pattern>
<BR></servlet-mapping> <BR><BR><BR>并且一个匹配以前描述的 /logon
路径的请求的URI可以看起来象是这样: <BR>http://www.mycompany.com/myapplication/logon.do
<BR>4.5.3 配置Struts标记库 <BR>下一步,你必须添加一个定义Struts标记库的条目。这个条目看起来应该象是这样: <BR>代码:
<BR><BR><taglib>
<BR><taglib-uri>/WEB-INF/struts.tld</taglib-uri>
<BR><taglib-location>/WEB-INF/struts.tld</taglib-location>
<BR></taglib>
<BR><BR><BR>它告诉JSP系统到哪里去找这个库的标记库描述符(在你的应用程序的WEB-INF目录,而不是在外部互联网上的某个地方)。
<BR>4.5.4 添加Struts组件到你的应用程序中 <BR>为了在你的应用程序运行时使用Struts,你必须将 struts.tld
文件拷贝到你的 WEB-INF 目录,将 struts.jar 文件拷贝到你的 WEB-INF/lib 。 <BR><BR><BR>
<TABLE class=tf width="98%" align=center border=0>
<TBODY>
<TR>
<TD>更多资源:<BR>参与论坛讨论:<A href="http://www.java-cn.com/forum/index.jsp"
target=_blank>http://www.java-cn.com/forum/index.jsp</A><BR>更多技术文章:<A
href="http://www.java-cn.com/technology/index.jsp"
target=_blank>http://www.java-cn.com/technology/index.jsp</A><BR>JAVA中文站:
我们要做中国最好的JAVA门户网站!</TD></TR>
<TR>
<TD>原文地址:<A
href="http://www.java-cn.com/technology/technology_detail.jsp?id=2859"
target=_blank>http://www.java-cn.com/technology/technology_detail.jsp?id=2859</A><BR><FONT
class=red>任何获得许可转载此文章,须在显著位置标明<A href="http://www.java-cn.com/"
target=_blank>JAVA中文站</A>的原文地址</FONT></TD></TR></TBODY></TABLE>
<P align=right>整理发布:zhangyang121</P></TD></TR>
<TR>
<TD
style="BORDER-TOP: #c0c0c0 1px solid; BORDER-LEFT: #c0c0c0 1px solid; BORDER-BOTTOM: #c0c0c0 1px solid"
vAlign=top width=500 height=11>
<P align=left><FONT color=#7a7978>文摘分类>> </FONT><FONT
color=#999999>编程基础 | </FONT><FONT color=#7a7978>阅读次数>>
</FONT><FONT color=#999999>1223 | </FONT><FONT
color=#7a7978>推荐人数>> </FONT><FONT color=#999999>0 |
</FONT><FONT color=#7a7978>整理日期>> </FONT><FONT
color=#999999>2004-07-27</FONT></P></TD>
<TD
style="BORDER-RIGHT: #c0c0c0 1px solid; BORDER-TOP: #c0c0c0 1px solid; BORDER-BOTTOM: #c0c0c0 1px solid"
vAlign=top width=153 height=11></TD></TR></TBODY></TABLE></CENTER></DIV>
<P align=center>©JAVA中文站<BR><A href="http://www.java-cn.com/"
target=_blank>http://www.java-cn.com/</A><BR><A href="http://www.java-cn.net/"
target=_blank>http://www.java-cn.net/</A></P>
<P align=center><INPUT class=rim onclick=window.close() type=button value=关闭窗口 name=close></P></BODY></HTML>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -