1. Struts配置文件
[list]
[*]Web应用部署描述符web.xml
[*]Struts配置文件struts-config.xml
[*]应用资源配置文件application.properties
[*]struts组件配置文件
[/list]
1.1. web.xml
[list]
[*]配置struts的ActionServlet 和标签库。
[/list]
如:
代码中编号的地方对应下面的注释。
①标识为 web 应用部署描述符——前两行将文件标识为一个web 应用部署描述符。
②配置 ActionServlet— 这一段告诉容器装入action 名称下的ActionServlet 。有四个参数传递给ActionServlet: 即application,config, debug, 和detail。ActionServlet也可以接受其它参数。<load-on-startup>,给容器一个action servlet 的权重。如果设置为2,则允许其它 servlet 在需要时首先装入。这
将在你子类化了ActionServlet 之时显得很重要,以便你可以使用其它servlet 先期装入的资源。对一个应用来说, 仅可以装入一个ActionServlet 或者 ActionServlet 的子类。ActionServlet 设计为可以和应用中的其它组件共享资源。装入多ActionServlet 会造成冲突;因为一个 ActionServlet 可能会改写另一个ActionServlet 提交的资源。Struts 1.1 支持模块化应用,但仍然只允许装入一个ActionServlet 。
③标识 Struts 请求—这一段告诉容器将匹配*.do 格式的文件请求转发到action servlet。这就是我们在①中配置的ActionServlet 。不匹配这种格式的文件请求将不被Struts 处理。比如对*.html 或 *.jsp 文件的请求通常由容器内建的服务来处理。
④创建 welcome 文件—不幸的是,在这里设置一个index.do 文件将不会工作。容器希望
welcome 文件也是一个物理文件。
⑤配置标签库—这里我们配置应用中使用的标签库。 3 个核心的Struts 标签库—bean, html,和logic— 将可用在大多数应用中。如果你的应用中使用了其它的标签库,它们也在此进行配置。第一个元素,<taglib-uri>,给出标签库的逻辑名称。这通常看起来像是一个文件路径, 但其实不是。JSP 在导入标签库时将引用这个URI 。第2 个元素,<taglib-location>,提供提供了一个上下文相关的标签库描述符 (*.tld)路径。TLD 标识了库的实际类型(Java类)。当需要这个库时,容器会搜索标签库类文件的 classpath 。对Struts 标签库来说,容器将在struts.jar 文件中找到这些包。
1.2. struts-config.xml
[list]
[*]xml)用来装入多个关键的框架组件。这些对象一起构成了Struts 配置。Struts 配置和 Struts ActionServlet 一起工作,创建应用的控制层。
[/list]
Struts 配置是你的应用的真实蓝图。它知道表单中有什么字段。它知道哪里可以找到JSP文件。它也知道应用执行的每一个Action ,以及每个action 需要的实际资源。Struts 配置中的每个组件都是Java 对象。ActionForm 对象知道字段和表单。ActionForward 对象知道何处可以找到JSP 或其它资源。
1.2.1. <global-exceptions>注册异常
1.2.2. <form-beans>注册ActionFormBean
1.2.3. <global-forwards>注册全局ActionForward
这些 forward 对应用中的每个Action 都有效。你也可以部署一个局部 ActionForward 到<action> 元素中。局部转发仅针对该ActionMapping 有效。
1.2.4. <action-mappings>注册ActionMapping
<action-mappings> 元素描述了我们的应用要用来处理请求的ActionMapping 对象
(org.apache.struts.action.ActionMapping) 的集合。ActionMapping 则描述应用要采取的操作、命令。
1.2.5. <Controller>
Struts 允许多个应用模块共享一个单一的控制器 servlet。每个模块有其自己的Struts 配置并且可以相对于其他模块独立开发。<controler> 元素允许每个模ActionServlet 标识一套不同的配置参数。它们大多数是部署描述符中的原始<init-params>设置。<controller> 元素设置的属性值存储在一个控制器配置bean(org.apache.struts.config.ControllerConfig)之中。每个应用模块要创建一个控制器配置,包括缺省的根模块。如果一个模块的 struts-config 提供了一个<contrller> 元素,就是用来设置模块的控制器配置bean 的属性。
因为各个模块共享 ActionServlet, 你也可以为每个模块插入不同的请求处理器。这可以使每个模块都按自己的方式处理请求,而不用子类化共享的servlet。
1.2.6. <message-resources>
<message-resources> 元素用来部署应用需要使用的资源束。
1.2.7. <plug-in>
当一个Action 需要初始化和销毁它自己的资源时,它可以实现PlugIn 接口(org.apache.struts.action.PlugIn)。这个接口声明了init 和destroy 方法,
控制器可以在适当的时候进行调用。PlugIn Action 可以在Struts 配置中通过<plug-in>元素进行注册。
1.2.8. <data-sources>
配置数据源
1.3. application.properties
存放Struts资源束。文件自身是一个普通的文本文件,每一行是一个关键字-值对。可以实现应用的国际化。
[list]
[*]Web应用部署描述符web.xml
[*]Struts配置文件struts-config.xml
[*]应用资源配置文件application.properties
[*]struts组件配置文件
[/list]
1.1. web.xml
[list]
[*]配置struts的ActionServlet 和标签库。
[/list]
如:
<!—① -->
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE web-app
PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.2//EN"
"http://java.sun.com/j2ee/dtds/web-app_2_2.dtd">
<web-app>
<!—② -->
<servlet>
<servlet-name>action</servlet-name>
<servlet-class>
org.apache.struts.action.ActionServlet
</servlet-class>
<init-param>
<param-name>application</param-name>
<param-value>Application</param-value>
</init-param>
<init-param>
<param-name>config</param-name>
<param-value>/WEB-INF/conf/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>detail</param-name>
<param-value>2</param-value>
<servlet-name>action</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
<!—④-->
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
<!—⑤-->
<taglib>
<taglib-uri>/tags/struts-bean</taglib-uri>
<taglib-location>/WEB-INF/lib/struts-bean.tld</taglib-location>
</taglib>
<taglib>
<taglib-uri>/tags/struts-html</taglib-uri>
<taglib-location>/WEB-INF/lib/struts-html.tld</taglib-location>
</taglib>
<taglib>
<taglib-uri>/tags/struts-logic</taglib-uri>
<taglib-location>/WEB-INF/lib/struts-logic.tld</taglib-location>
</taglib>
</web-app>
代码中编号的地方对应下面的注释。
①标识为 web 应用部署描述符——前两行将文件标识为一个web 应用部署描述符。
②配置 ActionServlet— 这一段告诉容器装入action 名称下的ActionServlet 。有四个参数传递给ActionServlet: 即application,config, debug, 和detail。ActionServlet也可以接受其它参数。<load-on-startup>,给容器一个action servlet 的权重。如果设置为2,则允许其它 servlet 在需要时首先装入。这
将在你子类化了ActionServlet 之时显得很重要,以便你可以使用其它servlet 先期装入的资源。对一个应用来说, 仅可以装入一个ActionServlet 或者 ActionServlet 的子类。ActionServlet 设计为可以和应用中的其它组件共享资源。装入多ActionServlet 会造成冲突;因为一个 ActionServlet 可能会改写另一个ActionServlet 提交的资源。Struts 1.1 支持模块化应用,但仍然只允许装入一个ActionServlet 。
③标识 Struts 请求—这一段告诉容器将匹配*.do 格式的文件请求转发到action servlet。这就是我们在①中配置的ActionServlet 。不匹配这种格式的文件请求将不被Struts 处理。比如对*.html 或 *.jsp 文件的请求通常由容器内建的服务来处理。
④创建 welcome 文件—不幸的是,在这里设置一个index.do 文件将不会工作。容器希望
welcome 文件也是一个物理文件。
⑤配置标签库—这里我们配置应用中使用的标签库。 3 个核心的Struts 标签库—bean, html,和logic— 将可用在大多数应用中。如果你的应用中使用了其它的标签库,它们也在此进行配置。第一个元素,<taglib-uri>,给出标签库的逻辑名称。这通常看起来像是一个文件路径, 但其实不是。JSP 在导入标签库时将引用这个URI 。第2 个元素,<taglib-location>,提供提供了一个上下文相关的标签库描述符 (*.tld)路径。TLD 标识了库的实际类型(Java类)。当需要这个库时,容器会搜索标签库类文件的 classpath 。对Struts 标签库来说,容器将在struts.jar 文件中找到这些包。
1.2. struts-config.xml
[list]
[*]xml)用来装入多个关键的框架组件。这些对象一起构成了Struts 配置。Struts 配置和 Struts ActionServlet 一起工作,创建应用的控制层。
[/list]
Struts 配置是你的应用的真实蓝图。它知道表单中有什么字段。它知道哪里可以找到JSP文件。它也知道应用执行的每一个Action ,以及每个action 需要的实际资源。Struts 配置中的每个组件都是Java 对象。ActionForm 对象知道字段和表单。ActionForward 对象知道何处可以找到JSP 或其它资源。
1.2.1. <global-exceptions>注册异常
<exception
type="org.apache.struts.webapp.example.ExpiredPasswordException"
key="expired.password"
path="/changePassword.jsp" />
1.2.2. <form-beans>注册ActionFormBean
<form-bean name="menuForm" type="org.apache.struts.scaffold.MenuForm" />
<form-bean name="logonForm"
type="org.apache.struts.action.DynaActionForm">
<form-property name="username" type="java.lang.String" />
<form-property name="password" type="java.lang.String" />
</form-bean>
1.2.3. <global-forwards>注册全局ActionForward
这些 forward 对应用中的每个Action 都有效。你也可以部署一个局部 ActionForward 到<action> 元素中。局部转发仅针对该ActionMapping 有效。
<global-forwards>
<forward name="logoff" path="/Logoff.do" />
<forward name="logon" path="/Logon.do" />
</global-forwards>
1.2.4. <action-mappings>注册ActionMapping
<action-mappings> 元素描述了我们的应用要用来处理请求的ActionMapping 对象
(org.apache.struts.action.ActionMapping) 的集合。ActionMapping 则描述应用要采取的操作、命令。
<action-mappings>
<action path="/logoff"
type="app.LogoffAction" />
<action path="/logonSubmit"
type="app.LogonAction"
name="logonForm"
scope="request"
validate="true"
input="/pages/Logon.jsp" />
<action path="/logon"
type="app.ContinueAction">
<forward name="continue"
path="/pages/Logon.jsp" />
</action>
<action path="/welcome"
type="app.ContinueAction">
<forward name="continue"
path="/pages/Welcome.jsp" />
</action>
</action-mappings>
1.2.5. <Controller>
Struts 允许多个应用模块共享一个单一的控制器 servlet。每个模块有其自己的Struts 配置并且可以相对于其他模块独立开发。<controler> 元素允许每个模ActionServlet 标识一套不同的配置参数。它们大多数是部署描述符中的原始<init-params>设置。<controller> 元素设置的属性值存储在一个控制器配置bean(org.apache.struts.config.ControllerConfig)之中。每个应用模块要创建一个控制器配置,包括缺省的根模块。如果一个模块的 struts-config 提供了一个<contrller> 元素,就是用来设置模块的控制器配置bean 的属性。
因为各个模块共享 ActionServlet, 你也可以为每个模块插入不同的请求处理器。这可以使每个模块都按自己的方式处理请求,而不用子类化共享的servlet。
<controller
nocache="true"
null="true"
processorClass="com.myCompany.struts.RequestProcessor"/>
1.2.6. <message-resources>
<message-resources> 元素用来部署应用需要使用的资源束。
<message-resources
parameter="resources.application"/>
<message-resources
parameter="resources.image"/>
1.2.7. <plug-in>
当一个Action 需要初始化和销毁它自己的资源时,它可以实现PlugIn 接口(org.apache.struts.action.PlugIn)。这个接口声明了init 和destroy 方法,
控制器可以在适当的时候进行调用。PlugIn Action 可以在Struts 配置中通过<plug-in>元素进行注册。
<plug-in className="org.apache.struts.validator.ValidatorPlugIn">
<set-property
property="pathname"
value="/WEB-INF/validator-rules.xml"/>
<set-property
property="pathname"
value="/WEB-INF/validation.xml"/>
</plug-in>
1.2.8. <data-sources>
配置数据源
<data-sources>
<data-source>
<set-property property="maxCount" value="4" />
<set-property property="minCount" value="2" />
<set-property property="description"
value="Artimus:MySQL Data Source Configuration" />
<set-property property="driverClass" value="org.gjt.mm.mysql.Driver" />
<set-property property="url" value="jdbc:mysql://localhost:3306/artimus" />
<set-property property="autoCommit" value="true" />
<set-property property="user" value="root" />
<set-property property="password" value="" />
</data-source
1.3. application.properties
存放Struts资源束。文件自身是一个普通的文本文件,每一行是一个关键字-值对。可以实现应用的国际化。
# -- Custom messages for struts-messages application --
# -- See http://www.coreservlets.com/Apache-Struts-Tutorial/ --
form.title=Registration
form.firstName=First name
form.lastName=Last name
form.emailAddress=Email address
form.buttonLabel=Register Me
form.successString=Success