`

Struts(三)ActionServlet

 
阅读更多

Struts框架中所使用的组件有:

  ActionServlet 控制器

  ActionClass是开发者自己写的类,包含事务逻辑,。

  ActionForm 显示模块数据

  ActionMapping 帮助控制器将请求映射到操作

  ActionForward 用来指示操作转移的对象

  ActionError 用来存储和回收错误

  Struts标记库可以减轻开发显示层次的工作

首先介绍控制器ActionServlet在框架中所扮演的角色和责任。

框架中的控制器组件是由org.apache.struts.action.ActionServlet类实现的,这个类是javax.servlet.http.HttpServlet类的扩展。

Struts 的ActionServlet 控制导航流。他是web容器首先调用的类。

当 ActionServlet 从容器接收到一个请求, ActionServlet 通过查找请求的路径可以决定使用哪个ActionForm,它使用URI来决定哪个Action 将用来处理请求。以后的所有控制操作也是从ActionServlet开始进行调用的。

Struts controller基本功能是:

   1. 截获用户的Http请求

  2. 把这个请求映射到相应的Action类,如果这是此类收到的第一个请求,将初始化实例并缓存。

   3. 创建或发现一个ActionForm实例(看配置文件是否定义),然后将请求过程传递到写一个业务层。

   4. 调用Action实例的processActionPerform方法并将ActioForm bean,ActionMapping对象,request和response对象传给它。  

   5.processActionPerform返回一个ActionForward对象,此对象连接到相应的jsp页面.

具体的调用流程参见上一篇文章。

  我们需要在web.xml中声明ActionServlet,并且将它配置成启动时进行加载。

<load-on-startup>2</load-on-startup>表明ActionServlet在web容器启动是加载。即当web容器启动的时候就知道了Struts这个框架的存在了。

<servlet-mapping>配置的信息是让web容器知道待请求什么样(*.do)URL格式的时候使用ActionServlet,<servlet-name>action</servlet-name>则告诉web容器ActionServlet的位置。


ActionServlet提供了一组能够被Action对象使用的方法。如果 ActionServlet 不能满足我们的需求,我们也可以通过继承它来实现自己的类。当然还需要在 /WEB-INF/web.xml 中来具体指定。否则web容器也不知道我们写的类。

此外,ActionServlet 还负责初始化和清除应用配置信息的任务。ActionServlet 的初始化工作在 init 方法中完成,它可以分为两个部分:初始化 ActionServlet 自身的一些信息以及每个模块的配置信息。前者主要通过 initInternal、initOther 和 initServlet 三个方法来完成。

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


RequestProcessor 是控制器中的一个非常重要的类,在调用了ActionServlet之后,就是RequestProcessor这个类起作用了,包含了 Struts 控制器的几个核心的处理逻辑,它调用不同的 processXXX 方法来完成不同的处理。下表列出其中几个最主要的方法,这几个方法在上一篇文章的具体流程中都用到了,简单列举如下。

方法

功能

processPath

获取客户端的请求路径,截取到有用路径

processMapping

利用路径来获得相应的 ActionMapping

processActionForm

初始化 ActionForm(如果需要)并存入正确的 scope 中

processActionCreate

初始化 Action

processActionPerform

调用 Action 的 execute 方法

processForwardConfig

处理 Action 返回的 ActionForward

分享到:
评论

相关推荐

    Struts 源码学习之ActionServlet

    #### 三、ActionServlet配置详解 ##### 3.1 web.xml配置 在Struts应用中,`ActionServlet`的配置通常位于`web.xml`文件中,如下所示: ```xml &lt;servlet&gt; &lt;servlet-name&gt;action&lt;/servlet-name&gt; &lt;servlet-class&gt;...

    struts2和servlet的共存问题

    但在某些场景下,开发者可能需要同时使用Struts2和其他Servlet技术(如自定义Servlet或第三方Servlet),这时就会遇到Struts2与Servlet的共存问题。 #### 二、问题描述 当Struts2作为Web应用程序的前端控制器时,...

    Struts2访问ServletAPI

    当一个请求到达服务器时,Struts2的过滤器(通常名为`FilterDispatcher`或`StrutsPrepareAndExecuteFilter`)会捕获这个请求,然后根据配置的Action映射决定执行哪个Action。在Action执行过程中,如果需要直接访问...

    java上传与下载——struts2和servlet案例

    在Struts2中,我们通常会在Action类中处理这个逻辑,而在Servlet中,这将在doGet或doPost方法内完成。 现在,我们来看案例中的两个DEMO——JqUploadTest和CosUpload。JqUploadTest可能是指使用jQuery的Upload插件...

    关于struts和servlet同时用

    Struts通过Action类实现了对Servlet请求的分发,ActionForm负责收集和验证表单数据,而Model代表业务对象,View则负责展示数据。这种分离使得代码更易于维护和测试。Struts还提供了强大的国际化、异常处理、数据校验...

    struts1之ActionServlet详解_动力节点Java学院整理

    struts1之ActionServlet详解 struts1框架中的ActionServlet是Struts1架构的核心组件之一,负责处理用户请求、交互ActionForm、ActionMapping和Action等组件,以完成用户请求。下面将详细介绍ActionServlet的工作...

    ActionServlet深入探讨

    #### 三、ActionServlet的主要功能 ActionServlet主要负责以下功能: - **URI映射**:将客户端发送的请求URI映射到对应的Action类。 - **Action实例管理**:对于首次被调用的Action类,ActionServlet会创建其实例...

    Struts2中Servlet的配置

    当你在Action类中实现这些接口后,Struts2会自动注入对应的请求和响应对象,使得你可以像在Servlet中那样直接操作它们,进行响应的处理和请求的数据获取。 2. **使用ActionContext访问Servlet API**: `...

    Struts2之Servlet API及单元测试初识案例struts005

    Struts2中的`ActionServlet`就是对Servlet API的一种扩展,它作为整个框架的调度中心,负责接收请求、调用Action并返回相应的结果。 在Struts2中,Servlet API主要体现在以下几点: 1. **过滤器(Filter)**:...

    Struts2之Servlet文件上传详解案例struts010

    综上所述,本案例“Struts2之Servlet文件上传详解”将引导你了解如何结合Struts2和Servlet实现文件上传功能,包括配置、Action编写、JSP页面设计以及注意事项。通过实践,你将更深入地理解Struts2框架在处理复杂Web...

    tomcat、struts2、servlet Filter(过滤器) 工作原理

    在Struts2中,用户请求首先会被Struts2的ActionServlet拦截,然后通过配置的Action映射找到对应的Action类来处理请求。Action执行完成后,返回一个Result,该Result定义了如何展示结果,可能是跳转到一个新的JSP页面...

    servlet与struts简介

    Struts框架的核心组件是ActionServlet,这是一个继承自HttpServlet的Servlet,它负责接收HTTP请求、解析请求参数,并根据配置文件中的规则将请求转发给相应的Action处理。 **工作流程:** 1. 用户发送HTTP请求到...

    struts2 Action 包 命名空间 servlet API

    Struts2通过FilterDispatcher这个Servlet过滤器来拦截所有到达服务器的请求,判断是否需要由Struts2框架处理,如果是,则根据配置的Action映射调用相应的execute()方法。 Struts2的包结构清晰,每个包都有其特定的...

    struts2和jspServlet上传

    开发者可以通过设置这些插件的配置选项,控制上传行为,如限制文件类型、大小,或者设定上传的URL(通常是Struts2 Action或Servlet的URL)。 总的来说,Struts2和JSP Servlet在文件上传方面各有优势,Struts2提供了...

    Struts1框架执行原理(附Action、ActionServlet、ActionForm工作机制)

    本篇文章将深入解析Struts1框架的执行原理,以及Action、ActionServlet、ActionForm三个关键组件的工作机制。 首先,我们来看Struts1的工作流程: 1. 用户通过浏览器发起HTTP请求,请求的目标是应用中的一个JSP或...

    Struts-Action核心代码

    在Struts中,`ActionServlet`是关键组件之一,它是Struts框架与Servlet容器之间的桥梁。 **ActionServlet** 是Struts框架的核心控制器,它是一个定制的Servlet,负责处理所有的HTTP请求。当用户发起一个请求时,...

    struts2之Action访问Servlet API

    三、使用 ServletActionContext 访问 Servlet API ServletActionContext 类提供了多种静态方法来访问 Servlet API,包括: * static PageContext getPageContext() : 取得 PageContext 对象 * static ...

    ActionServlet demo

    在Struts 1.3框架中,ActionServlet是一个关键组件,它是Struts的控制器,负责调度请求到相应的Action。当用户提交表单或点击链接时,请求会被发送到ActionServlet,它解析请求参数,根据配置的Action Mapping找到...

    Struts的小列子三个Action

    8. **扩展性**:除了基本的Action,Struts还支持ActionServlet、Interceptor等高级特性,增强了框架的灵活性和可扩展性。 综上所述,这个"Struts的小列子三个Action"示例涵盖了Struts框架的基本操作,展示了如何...

    servlet模拟struts1工作原理

    Struts1框架的核心组件包括ActionServlet、ActionForm、Action、Tiles以及配置文件(struts-config.xml)。ActionServlet作为控制器,负责拦截所有的HTTP请求,解析请求中的信息,并根据struts-config.xml配置文件来...

Global site tag (gtag.js) - Google Analytics