ITEEDU

struts配制详解

struts的基本流程:

  1. 指定类型url(如*.do)传给struts的ActionServlet,如xxx.do。
  2. ActionServlet解析出xxx,根据xxx找到对应Action。
  3. Action处理完业务后会返回一个Forward。
  4. struts根据Forward跳转到指定页面。

所以弄清上面每个过程配制文件是怎么配制的,struts就基本会用了。

先在web.xml中加入如下配制,可以参考servlet的配制过程

  <!-- 标准ActionServlet(带调式) -->
  <servlet>
    <!-- 给ActionServlet启个名-->
    <servlet-name>action</servlet-name>
     <!-- 指定ActionServlet类-->
    <servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
    <!-- 指定config.xml文件位置-->
    <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>
    <load-on-startup>2</load-on-startup>
  </servlet>

  <!-- 指定ActionServlet处理的url类型,servlet-name要和上面的对应-->
  <servlet-mapping>
    <servlet-name>action</servlet-name>
    <url-pattern>*.do</url-pattern>
  </servlet-mapping>

配制struts-config.xml,上面ActionServlet指定的配制文件。

struts-config.xml的根为<struts-config>,所有的配制都要写在这里面。

<struts-config>
    <!--配制内容 -->
</struts-config>

以下的配制没有说明,默认都是在<struts-config>中。

    <form-beans>
        <!-- 一个ActionForm的例子-->
        <form-bean
            <!-- ActionForm的名字,以后引用时用-->
            name="inputForm"
            <!-- ActionForm类全路径-->
            type="app.InputForm"/>

        <!-- 动态ActionForm的例子,不用创建类,type都指向DynaActionForm -->
        <form-bean
            name="logonForm"
            type="org.apache.struts.action.DynaActionForm">
            <!--Form的属性,和表单中的提交名对应-->
            <form-property
                name="username"
                type="java.lang.String"/>
            <form-property
                name="password"
                type="java.lang.String"/>
       </form-bean>
    </form-beans>

struts分发请求的配制。

 

    <action-mappings>
        <!-- 最简单跳转 -->
        <action
            <!-- 对应url,web.xml中ActionServlet对应servlet-mapping配制*的部分 -->
            path="/Welcome"
            <!-- 要跳转到的页面 -->
            forward="/pages/Welcome.jsp"/>

        <!-- 用ForwardAction跳转 -->
        <action
            path="/Input"
            <!-- ForwardAction是struts中用来代替jsp中跳转功能的。
                 在struts中不建议用jsp的跳转可能,可能会出各种问题。 -->
            type="org.apache.struts.actions.ForwardAction"
            <!-- ForwardAction参数,要跳转到的页面 -->
            parameter="/pages/Input.jsp"/>

        <!-- 自定义Action -->
        <action
            path="/InputSubmit"
            <!-- Action类全路径 -->
            type="app.InputAction"
            <!-- Action类使用的ActionForm,form-beans中定义。
                  form-beans中对应form-bean的name。-->
            name="inputForm"
            <!-- 作用范围 -->
            scope="request"
            <!-- 是否验证 -->
            validate="true"
            <!-- 验证出错跳转到页面 -->
            input="/pages/Input.jsp"/>

            <!-- 正则匹配Action -->
          <action
                <!-- *匹配的部分为以后参数中的{1} -->
                path="/edit*"
                type="app.Edit{1}Action"
                name="inputForm"
                scope="request"
                validate="true"
                input="/pages/Edit{1}.jsp"/>

	<action
                path="/mh"
                type="app.MhAction"
                name="memoryForm"
                scope="request"
		validate="true"
		input="/login.jsp">
                <!-- 根据Action返回name跳转
                     return (mapping.findForward("name")); -->
		<forward name="indexNoRight" path="/error/norighterror.jsp" />
		<forward name="indexsj" path="/mhsj.jsp" />
		<forward name="indexsj1" path="/mhsj_1.jsp" />

	</action>
    </action-mappings>