Struts的核心

Action, ActionForm, ActionForward 三个对象构成了Struts 的核心。

1、ActionServlet

      概念:ActionServlet类是Struts框架的内置核心控制器组件,它继承了javax. servlet.http.HttpServlet类,Struts的启动一般从加载ActionServlet开始,因此它在MVC模型中扮演中央控制器的角色。

     作用:Struts中,它的主要作用是用来接收用户的请求信息,然后根据系统配置要求将请求传递给相应的Action对象。

在具体实现时,它首先要判断Action对象是否存在,如果不存在则先创建该对象;在请求被接收后,控制器会将其传递给一个Action实例,这一过程同样会判断实例是否存在,如果不存在则需先创建该实例的execute()方法。

      配置:ActionServlet是一个标准的Servlet,在web.xml文件中配置,该Servlet用于拦截所有的HTTP请求。因此,应将Servlet配置成自启动Servlet,即为该Servlet配置load-on-startup属性。


应将ActionServlet 配置成自启动Servlet,即配置load-on-startup 属性。

在web.xml 文件中增加如下代码:

<!--将ActionServlet配置成自启动的Servlet-->

<servlet>

   <!--指定Servlet 的名字-->

   <servlet-name>actionSevlet</servlet-name>

   <!--指定Servlet 的实现类-->

 <servlet-class>org.apache.struts.action.ActionServlet<Iservlet-class>

 <!--配置自启动的级别-->

 <load-on-startup>2</load-on-startup>

</servlet>

 

<servlet-mapping>

    <!--配置ActionServlet的URL映射-->

    <servlet-name>actionSevlet</servlet-name>

    <!--所有以.do 结尾的请求由ActionServlet拦截-->

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

</servlet-mapping>

 

ActionServlet默认加载WEB-INF下的struts-config.xml文件。如果需要Struts 的配置文件不在WEB-INF路径下,或者改变了文件名,则应采用如下方式配置:

<servlet>

   <servlet-name>actionSevlet</servlet-name>

   <servlet-class>org.apache.struts.action.ActionServlet<Iservlet-class>

   <init-param>

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

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

   </init-param>

 <load-on-startup>2</load-on-startup>

</servlet>

注:config 是Struts 固定的参数名, Struts负责解析该参数,并加载该参数的指定的配置文件。

 

Struts 支持使用多个配置文件,当有多个配置文件时,应将不同的配置文件配置成不同的模块,并指定不同的URI。下面的片段配置了两个配置文件:

<!--将ActionServlet配置成自启动的Servlet-->

<servlet>

    <!--指定Servlet 的名字-->

    <servlet-name>actionSevlet</servlet-name>

    <!--指定Servlet 的实现类-->

    <servlet-class>org.apache.struts.action.ActionServlet<Iservlet-class>

    <!--指定Struts的第一个配置文件-->

   <init-param>

   <!--指定配置文件的映射-->

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

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

   </init-param>

   <!--指定Struts的第二个配置文件-->

   <init-param>

       <!--指定配置文件的映射-->

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

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

 </init-param>

 <!--配置自启动的级别-->

 <load-on-startup>2</load-on-startup>

</servlet>

注:这两个配置文件分别被配置到config 和configlwawa 的路径下。表明将struts-config 1.xml 中的Action 映射到应用的根路径下,而struts-config2.xml 文件中的Action 则被映射到应用的wawa 子路径下。也就是说wawa 将作为系统的一个模块使用。

 

2、ActionForm (JavaBean)

        概念:ActionForm用于封装用户的请求参数,而请求参数是通过JSP页面的表单域传递过来的。因此应保证ActionForm的参数,与表单域的名字相同。

        作用机理:ActionForm本质上是一种JavaBean,是专门用来传递表单数据的DTO(Data Transfer Object,数据传递对象)。它包括用于表单数据验证的validate()方法和用于数据复位的reset()方法。
  Struts框架利用ActionForm对象来临时存放视图页面中的表单数据。例如,一个登录页面会有一个用户名输入框和一个密码输入框,以及用来提交登录请求的按扭。当用户提交登录请求后,Struts将 用户名和密码两个输入域的数据自动填充到相应的ActionForm对象中,然后控制层可以从该ActionForm对象中读取用户输入的表单数据,也可以把来自模型层的数据存放到ActionForm中,然后返回给视图显示。
  ActionForm(request)(session)两种作用域(scope)。如果ActionForm的作用域设定为request,ActionForm实例将保存在request对象中,像其他保存在request对象中的属性一样,仅在当前请求范围内有效。如果ActionForm的作用域设定为session,那么ActionForm实例将被保存在session对象中,同一个ActionForm实例在整个HTTP会话中有效。

        配置:所有的ActionForm都被配置在struts-config.xml文件中,该文件包括了一个form-beans的元素,该元素内定义了所有ActionForm,每个ActionForm对应一个form-bean元素。

      Struts 要求ActionForm 必须继承Struts 的基类: org.apache.struts.action.ActionForm。

      ActionForm 用于封装用户的请求参数,而请求参数是通过JSP 页面的表单域传递过来的。因此应保证ActionForm的参数与表单域的名字相同。

      FormBean 类应尽量声明成public.

        (1)ActionForm的实现

            //ActionForm 必须继承Struts 的基类

            public class LoginForm extends ActionForm{

            private String username;

            private String password;

            public void setUsername(String username){

                    this.username = username;

            }

           public String getUsername(){

                   return (this.username);

            }

           public void setPassword(String password){

                   this.password = password;

           }

          public String getPassword(){

3、ActionForward

      ActionForward是 Struts1的核心类之一,其基类仅有4个属性:name / path / redirect / classname。在基于Struts1Web应用程序开发过程中,Action操作完毕后程序会通过Struts1的配置文件struts- config.xml链接到指定的ActionForward,传到Struts1的核心类ActionServletActionServlet使用 ActionForward提供的路径,将控制传递给下一个步骤。ActionForward控制接下来程序的走向。ActionForward代表一个应用的URI,它包括路径和参数,例如:path=/modify.do?method=edit&id=10ActionForward的参数除了在struts-config.xml和页面中设置外,还可以通过在Action类中添加参数,或重新在Action中创建一个ActionForward

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值