Struts框架配置详解

 

Struts是一个非常优秀的MVC框架,是应用最广泛的 Java Web 应用开发框架。

    基于Struts开发的应用有3类组件构成:控制器组件、模型组件和视图组件。
控制器组件包括 ActionServlet (Struts的核心控制器)  还包括自定义的Action类(继承org.apache.struts.action.Action )代表用户的一个操作。
Struts框架主要是基于配置文件的,它最主要的配置文件为 struts-config.xml (Struts 2.0以前的版本)

    下面主要介绍如何在项目中使用Struts 和 Struts 的配置:
    使用Struts框架,首先要导入Struts库,可以到Struts的官方网站下载, 也可以直接在MyEclipse来快速添加(在项目上单击右键 选MyEclipse –> Add Struts Capabilities),然后创建Struts的配置文件 struts-config.xml 如果是用后一种方式加入的Struts库,那么MyEclipse会自动生成一个 strtus-config.xml 配置文件 。 接下来我们要在 we.xml 中配置Struts的核心控制器 ActionServlet  。
     web.xml 中增加的配置如下:
     
      <servlet>
               <servlet-name>action</servlet-name>
               <servlet-class>
                          org.apache.struts.action.ActionServlet
               </servlet-class>
               <init-param>
                         <param-name>config</param-name>
                         <param-value>/WEB-INF/struts-config.xml</param-value>
               </init-param>
               <load-on-startup>0</load-on-startup>
      </servlet>

      <servlet-mapping>
                <servlet-name>action</servlet-name>
                <url-pattern>*.action</url-pattern>
      </servlet-mapping>

  
配置详解:  <init-param>节点用于配置ActionServlet的初始化参数 ,这里将Struts的配置文件的路径作为参数,让程序创建ActionServlet时加载Strtus的配置文件 struts-config.xml ;  <load-on-startup>节点用于配置ActionServlet的加载顺序,值为0表示服务器启动时就加载,并且加载顺序为第一。 <url-pattern>节点配置 ActionServlet 的访问路径, 值 *.action 表示 凡是以.action结尾的请求都交由Struts处理。

     接下来是自定义Action的配置,自定义Action分为普通Action(只能处理用户的某个特定的请求的Action) 和 DispatcherAction(可以处理多种请求的Action) 。 自定义Action的配置包括ActionForm的配置和Action的配置。  首先展示普通Action的配置。 例如这个普通Action的类名为 LoginAction 对应的 ActionForm为 LoginForm 。 则在 struts-config.xml中的配置如下:

       <struts-config>
                  <!-- FormBean 的配置 -->
                  <form-beans>
                           <form-bean name=”loginForm” type=”com.kj.struts.form.LoginForm” />
                  </form-beans>
                 
                  <!--Action 的配置 –>
                  <action-mappings>
                           <action name=”loginForm” input="login.jsp"  path=”/login” scope=”request” 
                                        type=”com.kj.struts.action.LoginAction” >
                                   <forward name=”input” path=”/login.jsp” />
                                   <forward name=”welcom” path=”/welcome.jsp” />
                           </action>
                  </action-mappings>
       </struts-config>

配置详解: <form-bean>节点用于配置FormBean 主要属性有 name 和 type , 在<action-mappings>节点内配置所有的自定义Action  <Action>节点用于配置每个Action的详细信息. 属性 name 用于指定Action使用的ActionForm的引用名(即form-bean 的name属性的值);   属性input 指定ActionForm的 validate 方法验证出错时转向的页面;    属性 path 指定action的访问路径;  属性 scope 用于设置action对应的ActionForm的作用范围; 属性 type 用于指定此action对应的类;  <forward>节点用于配置action的跳转路径,可以配置多个,对应action处理的不同结果。

     DispatcherAction 在 struts-config.xml 中的配置如下:

       <struts-config>
                  <!-- FormBean 的配置 -->
                  <form-beans>
                           <form-bean name=”loginForm” type=”com.kj.struts.form.LoginForm” />
                  </form-beans>
                 
                  <!--Action 的配置 –>
                  <action-mappings>
                           <action name=”loginForm”
  parameter=”login”  path=”/login” scope=”request” 
                                        type=”com.kj.struts.action.LoginDispatcherAction” >
                                   <forward name=”input” path=”/login.jsp” />
                                   <forward name=”welcom” path=”/welcome.jsp” />
                           </action>
                  </action-mappings>
       </struts-config>

配置详解: DispatcherAction的配置与普通Action基本一致,唯一的不同是 DispatcherAction 要多配置一个属性 parameter 用于指示DispatcherAction 执行哪个方法。

     每创建一个新的自定义Action 就要创建相应的 ActionForm 类 而且如果ActionFrom要获取的值太多,就要定义很多的属性,很麻烦。Struts提供了动态 FormBean的配置,使得所有FormBean的属性都可以在配置form-bean时配置完成,不必再编写相应的FormBean类了。 动态Form( DynaActionForm) 的配置如下:

<struts-config>
                  <!-- FormBean 的配置 -->
                  <form-beans>
                           <form-bean name=”loginForm” type=”org.apache.struts.action.DynaActionForm”>
                                      <form-property name=”username” type=”java.lang.String” />
                                      <form-property name=”password” type=”java.lang.String” />
                           </form-bean>
                  </form-beans>
                 
                  <!--Action 的配置 –>
                  <action-mappings>

                 
 </action-mappings>
       </struts-config>

配置详解: 动态ActionForm (DynaActionForm) 与普通ActionForm 配置的区别有三点: 1.type属性的值为固定的 org.apache.struts.action.DynaActionForm  Struts提供的动态ActionForm类。   2. ActionFrom的属性直接在配置文件里配置,使用<form-property>节点配置ActionForm的属性。 3. 动态ActionForm 在Action中使用时和ActionForm有所不同,首先要用  DynaActionForm dynaForm = (DynaActionForm)from;  将form对象转成DynaActionForm类型, 然后使用 dynaForm.getString(“username”); 的方式取值,  如何属性的类型是其他类型 可以使用 Integer id =  (Integer)dynaForm.get(“id”);   的方式取值, 注意get方法取出的值是Object类型,必须转型。
      动态ActionForm虽然不需要定义ActionForm类,但是还是要在 struts-config.xml 中配置相应的属性,配置依然很复杂,所以应用很少。    更好的解决方式是在ActionForm中 定义实体实体对象属性, 用实体对象来封装众多的属性,  这样做就不需要设置很多的属性了,使用的时候也只需要将页面 input 的name属性设置为 对象属性名.属性名 (例如 <input type=”text” name=”user.username” />)即可。
    注意: 使用实体类作为ActionForm的属性时, 定义该属性一定要使用new User() 的方式创建实例,否则使用时会报 “未将对象引用设置到对象实例” 的错误  ,  实体属性定义方式如下:
                         private User user = new User(); 

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值