struts1执行流程及环境搭建

本文介绍了Struts1 MVC框架的基本组成与工作流程,包括核心控制器ActionServlet、业务逻辑组件Action、表单数据处理ActionForm等关键部分。通过一个简单的登录示例详细展示了如何搭建Struts1环境。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

struts是应用在web层的一个MVC框架。主要包含actionServlet、Action、ActionForm、ActionForward、ActionMapping这几个组件和struts-config.xml配置文件。其运行流程如下图:
这里写图片描述

黄色的标志的是需要用户自己实现的类。
actionServlet:是struts1的核心控制器。其主要功能是截取url,读取struts-config.xml的配置信息,把表单数据赋值给actionForm。

action:完成业务逻辑,确定要跳转的页面(return mapping.findForward(“要返回页面对应的name”))。

actionForm:接收表单数据,并能够自动完成数据类型转换。

actionMapping:根据截取的url映射到相应的action,并且将action和对应的form相关联。

actionForward:封装转发路径

下面搭建一个简单登录的struts实例:

  1. 下载struts的jar包,http://struts.apache.org/
  2. 引入struts1运行必须的jar包,项目整个目录如下:
    这里写图片描述

  3. web.xml中配置ActionServlet入口

<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>
    <init-param>
        <param-name>debug</param-name>
        <param-value>2</param-value>
    </init-param>
    <load-on-startup>2</load-on-startup>
  </servlet>
 <servlet-mapping>
    <servlet-name>action</servlet-name>    //Servlet的URL映射
    <url-pattern>*.do</url-pattern>        //所有.do的URL 
  </servlet-mapping>

4.struts1核心配置文件struts-config.xml
在使用框架之前,没有action,只有servlet,每个servlet的实例是根据url到web.xml中进行匹配的。而现在web.xml中只有一个核心servlet,它控制,那程序怎么知道具体要使用哪个action呢?这就需要在配置文件中进行一一对应了。action标签中的path就是截取到的url,type就是对应的action全路径,name是这个action对应的form。
form-benas中可以配置多个form,action-mappings中可以配置多个action

<struts-config>
    <form-beans>

       <form-bean name="logonForm" type="com.tgb.struts1.form.LogonActionForm"></form-bean>
    </form-beans>
    <action-mappings>
      <action path="/logon" type="com.tgb.struts1.LogonAction" name="logonForm" scope="request">
        <forward name="success" path="/success.jsp"></forward>
        <forward name="error" path="/error.jsp"></forward>
      </action>
    </action-mappings>
</struts-config>

5.定义Form

public class LogonActionForm extends ActionForm {
    private String userName;
    private String passWord;
    public String getUserName() {
        return userName;
    }
    public void setUserName(String userName) {
        this.userName = userName;
    }
    public String getPassWord() {
        return passWord;
    }
    public void setPassWord(String passWord) {
        this.passWord = passWord;
    }

}

6.Action实现类

public class LogonAction extends Action {
    @Override
    public ActionForward execute(ActionMapping mapping, ActionForm form,
            HttpServletRequest request, HttpServletResponse response)
            throws Exception {
        LogonActionForm logonActionForm =(LogonActionForm)form;
        String userName =logonActionForm.getUserName();
        String passWord =logonActionForm.getPassWord();
        return mapping.findForward("success");
    }
}

form必须继承ActionForm,action必须继承Action。logon.jsp页面中用户名和密码标签的name属性值必须和form类中set方法后的名字一致(首字母小写)。

这样,一个struts1的运行环境就搭建好了。

以上面的登录为例介绍一下struts1的执行流程:

1.项目启动后,根据web.xml的配置信息,初始化ActionServlet。

2.ActionServlet初始化时读取struts-config.xml的信息。

3.客户端发送请求,ActionServlet截取url(截取到logon),根据读取的配置信息,找到logon对应的action的配置。

4.通过action中的name属性得到对应的ActionForm,实例化form,将表单数据赋值给form,并调用form的validate方法进行验证。

5.验证通过后,实例化相应的action,并执行action中指定的方法
6. 根据action中方法的返回值,从配置信息中找到对应的转向信息(jsp页面或者是其他的action方法)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值