2006年03月14日

org.apache.struts.action
 
基本上,控制整个struts framework的运行的核心类、组件都在这个包中,比如我们上面提到的控制器ActionServlet。已经Action,ActionForm,ActionMapping等等。struts1.1比1.0多了 DynaActionForm 类。增加了动态扩展生成FormBean功能
 
org.apache.struts.actions
 
这个包是主要作用是提供客户的http请求和业务逻辑处理之间的特定适配器转换功能,而1.0版本中的部分动态增删FromBean的类,也在struts1.1中被Action包的DynaActionForm组件所取代
 
org.apache.struts.config
 
提供对配置文件struts-config.xml元素的映射。这也是sturts1.1中新增的功能
 
org.apache.struts.util
 
Strtuts为了更好支持web application的应用,体统了一个些常用服务的支持,比如Connection Pool和Message Source。
 
org.apache.struts.taglib
 
这不是一个包,而是是一个客户标签类的集合。下面包括Bean Tags,HTML Tags,Logic Tags,Nested Tags,Template Tags这几个用于构建用户界面的标签类。
 
org.apache.struts.validator
 
Struts1.1 framework中增加了validator framework,用于动态的配置from表单的验证。 

<?xml version="1.0" encoding="ISO-8859-1" ?>
<!DOCTYPE struts-config PUBLIC
          "-//Apache Software Foundation//DTD Struts Configuration 1.1//EN"
          "http://jakarta.apache.org/struts/dtds/struts-config_1_1.dtd">
      
<struts-config>
  <!– ============ Data Source =================================== –>

  <!– ========== Form Bean Definitions =================================== –>
  <form-beans>
    <form-bean      name="logonForm"
                          type="addressbook.forms.LogonForm"/> 
  </form-beans>
 
  <!– ========== Global Forward Definitions ============================== –>
  <global-forwards>
    <forward   name="logoff"              
       path="/logoff.do"/>
  </global-forwards>


  <!– ========== Action Mapping Definitions ============================== –>
    <action-mappings>
    <!– Process a user logon –>
    <action    path="/logon"
                   type="addressbook.actions.LogonAction"
                   name="logonForm"
                   scope="request"
                   input="/logon.jsp">
    <forward name=“success”path=“/home.do”/>
    </action>
    </action-mappings>
 
  <message-resources parameter="addressbook.ApplicationResources"/>
</struts-config>

详解:

每个<form-bean>子元素都包括下列属性:
name
   表单bean的名称,稍后在配置文件中会用到。ActionServlet举例说明了该bean(如果需要的话)并在将对bean的引用存储在请求或会话对象中时将该名称用作键。

type
 类的全限定名称,它继承org.apache.struts.action.ActionForm该类必须在类路径中。接受“Struts贸易样本”中的注册的表单bean包括HTML注册表单中每个字段的getter 和setter方法。该bean还包括验证方法,如下节“验证”中所述。

每个<action>元素都包括下列属性中的某些属性或所有属性:
path

    将请求指定为非限定URL,不带文件扩展名(例如,“/register”)请求是根据<action>元素中的其它属性来处理的,并且是用户输入的结果或者是在different<action>元素中标识的转发的结果。

type
    指定在发出请求时调用其执行方法的操作类的全限定名。该类必须在类路径中。
    注:不指定要实例化的类,可以通过使用forward属性来转发请求,该属性在“Struts贸易样本”中未使用,并且与后面描述的<forward>子元素不相同。

name
   用于保存发送至HTML表单或接收自HTML表单的数据表单bean的名称。

input
   指定相对URL(例如,“/register.do”或“/index.jsp”)必须包括后缀,
如果表单bean的验证方法指示发生了输入错误,则会调用URL;

scope
    指定将对表单 bean的引用存储在哪个作用域中。其值为“会话”(缺省值)或“请求”。

<?xml version="1.0" ?>
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.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>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>detail</param-name>
      <param-value>2</param-value>
    </init-param>
    <init-param>
      <param-name>validate</param-name>
      <param-value>true</param-value>
    </init-param>
    <load-on-startup>2</load-on-startup>
  </servlet>

<!– Standard Action Servlet Mapping 将所有的以.do为扩展名的页面的请求交给ActionServlet处理 –>
  <servlet-mapping>
    <servlet-name>action</servlet-name>
    <url-pattern>*.do</url-pattern>
  </servlet-mapping>

<!– Struts Tag Library Descriptor –>
    <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-bean.tld</taglib-uri>
      <taglib-location>/WEB-INF/struts-bean.tld</taglib-location>
    </taglib>
    <taglib>
      <taglib-uri>/WEB-INF/struts-logic.tld</taglib-uri>
      <taglib-location>/WEB-INF/struts-logic.tld</taglib-location>
    </taglib>

<!– The Welcome File Liet –>
  <welcome-file-list>
    <welcome-file>index.html</welcome-file>
  </welcome-file-list>
</web-app>