Struts总结

来源:互联网 发布:python pop3发送邮件 编辑:程序博客网 时间:2024/05/07 07:11

 Struts                                      

Struts=Struts核心类+Struts配置文件+Struts标签库

Struts核心类:

              ActionServlet   中央控制器

              ActionForm       显示模块数据

              ActionMapping   帮助控制器将请求映射到操作

              ActionForward   用来指示操作转移的对象

              ActionError      用来存储和回收错误

Structs配置文件:

              ApplicationResources.properties  存放本地化信息和标签

              Struts-config.xml   存放控制器所需的配置文件

Structs标签库:

              Struts-html.tld  扩展HTML Form的jsp标签

              Struts-bean.tld  扩展处理JavaBean的jsp标签

              Struts-logic.tld 扩展测试属性值的jsp标签

 

//在struts-config.xml中,每一个Action的映射信息都通过一个<Action>元素来配置,这些配置信息在系统启动时被读入内存,

//在内存中,每一个<Action>元素都对应一个org.acache.struts.action.ActionMapping类的实例

//一个用户的请求是通过ActionServlet来处理的转发的。

 

Struts工作流程:

    对于采用Struts框架的Web应用,在WEB应用启动时就会加载并初始化ActionServlet,ActionServlet从struts-config.xml文件中读取配置信息,把它们存放在各种配置对象中,例如:Action的映射信息存放在ActionMapping对象中。

    (1)检索和用户请求匹配的ActionMapping实例,如果不存在,就返回用户请求路径无效的信息。

    (2)如果ActionForm实例不存在,就创建一个ActionForm对象,把客户提交的表单数据保存到ActionForm对象中。

    (3)根据配置信息决定是否需要表单验证。如果需要验证,就调用ActionForm的validate()方法。

    (4)如果ActionForm的validate()方法返回null或返回一个不包含ActionMessage的ActionErrors对象,就表示表单验证成功。如果ActionForward的validate()方法返回一个包含一个或多个ActionMessage的ActionErrors对象,就表示表单验证失败,此时ActionServlet将直接把请求转发给包含用户提交表单的JSP组件。在这种情况下,不会在创建Action对象并调用Action的execute()方法。

    (5)ActionServlet根据ActionMapping实例包含的映射信息决定将请求转发给哪个Action.如果相应的Action实例不存在,就先创建这个实例,然后调用Action的execute()方法。

    (6)Action的execute()方法返回一个ActionForward对象,ActionServlet再把客户请求转发给ActionForward对象指向的JSP组件

    (7)AcitonForward对象指向的JSP组件生成动态网页,返回给客户。

 

 

-------------------------------web.xml配置文件-----------------------------------

配置一个servlet,名字为action,类为org.apache.struts.action.ActionServlet

<servlet>

        <servlet-name>action</servlet-name>

        <servlet-class>

            org.apache.struts.action.ActionServlet

        </servlet-class>

定义servlet的初始参数config,用来设置struts配置文件的路径

       <init-param>

            <param-name>config</param-name>

            <param-value>/WEB-INF/struts-config.xml</param-value>

        </init-param>

</servlet>

设置该servlet在web应用启动时被加载次序,数值越小越先加载,如果为负或没有设置,就在首次访问该servlet时被加载

<load-on-startup>0</load-on-startup>

配置一个servlet映射, *do表示ActionServlet只负责处理.do结尾的URL

    <servlet-mapping>

             <servlet-name>action</servlet-name>

             <url-pattern>*.do</url-pattern>

         </servlet-mapping>

 

 

----------------------------Struts-config.xml配置文件------------------------------

<struts-config>

  <data-sources>

    <data-source type="org.apache.commons.dbcp.BasicDataSource">     

      <set-property property="driverClassName" value="com.mysql.jdbc.Driver" />

      <set-property property="url" value="jdbc:mysql://localhost:3306/member?characterEncoding=gb2312" />

      <set-property property="username" value="root" />

      <set-property property="password" value="root" />

      <set-property property="minActive" value="2" />

      <set-property property="maxActive" value="20" />    

      <set-property property="defaultAutoCommit" value="true" />

    </data-source> 

  </data-sources>

配置数据源,<data-sources>内可设置多个<data-source>。每个<data-source>用来配置一个数据源,type属性指定该数据源的实现类,在该标签体内通过<set-property>来配置数据源的各种属性。

<form-beans>

    <form-bean name="addMemberForm" type="org.apache.struts.validator.DynaValidatorForm">

      <form-property name="name" type="java.lang.String" />

      <form-property name="password" type="java.lang.String" />

     </form-bean>

<form-bean name="loginForm" type="com.struts.form.LoginForm"/>

 </form-beans>

配置ActionForm Bean,在<form-beans>中可以有多个<form-bean>。<form-bean>用来设置ActionForm Bean。<form-bean>共有两个属性:name(为当前的ActionForm Bean指定一个供访问的名字),type(指出当前的ActionForm Bean的完整类)。如果要配置动态ActionForm 的话,可以使用<form-property>来设置表单的属性,<form-property>共有3个属性:name(表单属性的名称),type(表单属性的值的类型),initial(该属性的初始值)

 

<global-exceptions>

<exception key="global.error" path="/err.jsp" scope="request" type="java.sql.SQLException"/>

</global-exceptions>

配置全局异常处理,key(消息资源文件中定义的消息key),path(异常发生时的转发路径),scope(指定ActionMessage实例存放的范围),type(所需处理的异常类名)

<global-forwards>

    <forward name="index" path="/index.jsp" /> 

    <forward name="add" path="/addMember.jsp" />

</global-forwards>

配置全局转发,name(转发路径的逻辑名),path(转发或重定向的URI,以"/"开头),redirect(请求转发:true,重定向:false)

<action-mappings>

<action attribute="loginForm" input="/login.jsp" name="loginForm" path="/login" scope="request" type="com.struts.action.LoginAction">

    <forward name="success" path="/index.jsp"/>

  </action>

</action-mappings>

<action>用于配置一个Action,在<action>中可使用<forward>来为该Action设置一个请求转发。<action>的属性包括:

attribute(设置与当前Action相关联的ActionForm Bean的名称),input(指定包含输入表单的URL路径,表单验证失败时,请求会被转发到该URL中),name(指定一个在<form-bean>中定义过的该Action关联的名字),path(指定访问Action的路径,以"/"开头),scope(指定ActionForm Bean的存在范围),type(指定Action类的完整类名),vaildate(指定是否要先调用ActionForm Bean的vaildate()方法,默认为true)

<message-resources parameter="com.struts.ApplicationResources" />

为struts框架设置一个消息资源绑定

</struts-config>

 

 

原创粉丝点击