`
zljpp
  • 浏览: 259427 次
社区版块
存档分类
最新评论

Struts功能详解 ——ActionServlet

 
阅读更多

ActionServlet类是Struts框架的内置核心控制器组件,它继承了javax.servlet.http.HttpServlet类。Struts的启动通常从

加载ActionServlet开始。Web容器会在首次启动或Struts应用的第一个请求到达时加载ActionServlet。一般情况下都

配置web容器比如tomcat启动的时候加载ActionServlet类,使用<load-on-startup>1</load-on-startup>标签配置启动

加载。

ActionServlet有如下这几个功能


1:读取配置文件Struts-config.xml


ActionServlet加载的时候读取Struts-config.xml文件,将文件对应的配置信息读取到内存中,ActionServlet 根据不同的模块来初始化 ModuleConfig 类,并在其中以XXXconfig 集合的方式保存该模块的各种配置信息,比如 ActionConfig,FormBeanConfig 等。


比如配置文件中的 Action映射定义都保存在 ActionConfig 集合中。相应地有 ControlConfig 集合、FormBeanConfig 集合、ForwardConfig集合和 MessageResourcesConfig 集合等。

这里的模块是为了用于不同用户在同时使用struts-config.xml文件时冲突,每个用户可以定义自己的配置文件,由容器自动去整合配置,每个配置文件相当于一个模块。


2:截取客户端http请求,分发到相应的Action


初始化工作完成之后,ActionServlet准备接收客户请求。针对每个请求,方法 process(HttpServletRequest request, HttpServletResponseresponse) 将被调用。该方法指定具体的模块,然后调用该模块的 RequestProcessor 的 process 方法。

其实根据Servlet的原理,应该调用ActionServlet的doPost()或doGet()方法来处理用户请求,而它们实际上都是调用process()方法具体处理请求的,如下列代码:




在上面我们看到ActionServletprocess()方法中实际处理用户请求的是RequestProcessor类的process()方法。Struts框架只允许应用程序中存在一个ActionServlet,但每个应用程序模块都有各自的RequestProcessor类实例。在ActionServletprocess()方法中,一旦选择了正确的应用程序模块,就会调用相应模块RequestProcessor实例的process()方法来处理请求。RequestProcessor类的process方法如下:


ActionServlet ActionConfig 中找出对应于该请求的 Action 子类,如果没有对应的 Action,控制器直接将请求转发给 JSP或者静态页面。否则控制器将请求分发至具体 Action 类进行处理。


3:从请求中获取数据填充 FormBean(如果需要)


在控制器调用具体 Action 的 execute方法之前,ActionForm 对象将利用 HTTP 请求中的参数来填充自己(可选步骤,需要在配置文件中指定)。具体的 ActionForm 对象应该是ActionForm 的子类对象,它其实就是一个 JavaBean。



需要特别说明的是,Struts的配置文件struts-config.xml作为ActionServlet的一个初始化参数值在web.xml文件中声明。另外,ActionServlet的URL形式是*.do,这样当在浏览器地址输入任何后缀为*.do的URL时,系统都会映射到ActionServlet。


分享到:
评论

相关推荐

    Struts 源码学习之ActionServlet

    本文旨在深入剖析Struts框架的核心组件之一——`ActionServlet`的工作原理及其配置过程,帮助读者更好地理解Struts框架的内部机制。 #### 二、ActionServlet概述 `ActionServlet`是Struts框架中的关键组件,负责...

    myeclipse+struts实例——2

    其核心组件包括ActionServlet、Action、ActionForm和配置文件struts-config.xml。在这个实例中,Action类将处理用户的请求,生成随机数并判断用户输入是否正确;ActionForm则用于在请求之间传递数据;struts-config....

    myeclipse+struts实例——1

    【标题】"myeclipse+struts实例——1"是一个基于Java EE(J2EE)开发的简单登录验证系统,采用MyEclipse作为集成开发环境,Struts作为MVC框架,以及Tomcat作为应用服务器。 【描述】"myeclipse+struts+tomcat 简单...

    JSP源码——[信息办公]Struts图书馆管理系统_struts.zip

    2. ActionServlet捕获请求,根据struts-config.xml中的配置,找到对应的ActionMapping。 3. ActionServlet调用相应的Action实例,将ActionForm中的数据传递给Action。 4. Action执行业务逻辑,可能与数据库交互,...

    struts1的工作流程

    在Web应用启动时,Struts框架中的核心组件——ActionServlet会被加载并初始化。ActionServlet的主要职责是在运行时解析和处理用户请求,它从`struts-config.xml`配置文件中读取一系列的配置信息,并将其存储到不同的...

    struts入门

    2. **Web.xml配置**: Web.xml是部署描述符文件,其中定义了Struts的核心Servlet——ActionServlet。该Servlet负责拦截所有以`.do`结尾的URL请求,并根据配置转发给相应的Action处理。 ```xml &lt;servlet&gt; &lt;servlet-...

    Struts——一种开源MVC的实现(外文文献+翻译)

    1. **控制器**:由`ActionServlet`实现,它是Struts的核心组件,负责接收客户端的请求,并决定将请求转发给哪个Action处理。 2. **业务逻辑**:通过`Action`类实现,负责处理具体的业务逻辑操作。 3. **模型状态...

    struts.properties配置详解

    在Struts2框架中,除了大家熟知的`struts.xml`配置文件之外,还有一个重要的配置文件——`struts.properties`。该文件主要用来存储一些Struts2的核心配置属性,通过键值对的方式设置框架的行为模式、国际化设置以及...

    struts1.2.doc

    在Struts框架中,ActionServlet扮演了控制器的角色,它是整个框架的入口点,处理用户请求,调用模型处理数据,再将结果返回给视图展示。 #### 二、Struts框架概述 Struts是Apache软件基金会支持的一个开源项目,...

    struts学习资料 pdf

    **Struts** 框架中的关键组件包括 **ActionServlet**、**ActionForm** 和 **Action**,它们共同协作完成 MVC 模式下的功能实现。 ##### 1. ActionServlet (Controller) **ActionServlet** 是 Struts 框架的控制器...

    基于MVC模式Struts框架

    本文旨在深入探讨Struts框架如何实现MVC模式,以及如何通过一个具体的例子——全面预算管理系统中的预算资料模块,来展示Struts框架的强大功能。 #### MVC模式概述 MVC模式最早由Xerox PARC在20世纪80年代为编程...

    实例学习 Struts.doc

    ### 实例学习 Struts.doc —— 关键知识点详解 #### 一、Struts框架简介与MVC模式 **Struts** 是一款用于构建企业级Java Web应用的强大框架,它能够帮助开发者有效地组织代码结构,提高应用程序的可维护性和扩展性...

    struts配置!!!!!!!!!!!!!!!!!

    `web.xml`是Web应用的基本配置文件,其中包含了对Struts框架核心组件——`ActionServlet`的配置。具体来看: ```xml &lt;servlet&gt; &lt;servlet-name&gt;action&lt;/servlet-name&gt; &lt;servlet-class&gt;org.apache.struts.action....

    Struts框架响应客户请求的工作流程

    当用户发送一个HTTP请求到服务器时,Struts框架中的核心控制器——ActionServlet会首先解析该请求,并尝试找到与之相匹配的`ActionMapping`实例。`ActionMapping`用于描述请求路径、所对应的Action类以及可能的转发...

    struts in action中文版1.2

    Struts的控制流可以从一个高层次的角度进行概述:当用户提交请求时,ActionServlet捕获请求,根据配置文件(struts-config.xml)找到对应的Action映射,然后调用相应的Action对象处理请求,并根据Action的返回值决定下...

    浅谈基于Struts和Hibernate的J2EE应用

    Struts就是在Model 2的基础上发展起来的,它提供了一个中心控制器——ActionServlet,统一管理请求。 【Struts核心组件】 - ActionServlet:作为前端控制器,接收HTTP请求,根据ActionMapping进行转发。 - Action:...

Global site tag (gtag.js) - Google Analytics