http://ajh-123.blog.163.com/blog/static/161727409201031455634475/

1.ActionServlet类:

是一个前端控制器,将request转发给RequestProcessor来处理。提供了一组能够被Action对象使用的方法:

(1) 动态的添加和删除,只影响应用程序当前的实例

public void addFormBean(ActionFormBean formBean)

public void removeFormBean(ActionFormBean formBean)

public void addForward(ActionForward actionForward)

public void removeForward(ActionForward actionForward)

public void addMapping(ActionMaping actionMapping)

public void removeMapping(ActionMaping actionMapping)

(2) 根据名称查找对象

public ActionFormBean findFormBean(String name)

public ActionForward findForward(String name)

public ActionMapping findMapping(String name)

(3) 用来处理数据源

public void addDataSource(String key, DataSource ds)

public DataSource findDataSource(String key)

(4) 使用destroy()方法结束ActionServlet

(5) 使用reload()方法从struts配置文件将信息重新加载。

2.ActionMapping类:

ActionMapping类是ActionConfig的子类,实质上是对struts-config.xml的一个映射类,从中可以取得所有的配置信息。将特定请求映射到特定Action的相关信息存储在ActionMapping中,ActionServlet将ActionMapping传送到 Action类的perform()方法,Action将使用ActionMapping的findForward()方法,此方法返回一个指定名称的 ActionForward,这样Action就完成了本地转发。若没有找到具体的ActionForward,就返回一个null。 ActionMapping类的方法:

(1) 可以在映射中动态添加ActionForward

public ActionForward findForward(String name)

(2) 可以返回与映射关联的表单bean

public void addForward(ActionForward forward)

(3) 可以返回映射的属性域(回话或请求)

public String getName()

(4) 可以返回映射的作用域

public String getScope()

3.RequestProcessor类

根据提交过来的url,如*.do从ActionMapping中得到相应的ActionForm和Action,然后将request参数对应到 ActionForm中,进行验证(ActionForm不光要对传入的paramter进行存储,也要校验?)。如果验证通过则调用Action的execute()方法来执行Action,最终返回ActionForward。

4.ActionForward类:

是对mapping中一个forward的包装,对应于一个url。

5.Action类:是框架包的核心,链接客户请求和业务操作,真正实现应用程序的事务逻辑,负责处理请求。其方法有:

(1) 所有Action类都扩展org.apache.struts.action.Action类,且覆盖类中定义的一个execute()方法(重载有多个)。

处理非HTTP请求:

public ActionForward execute(ActionMapping action, ActionForm form,ServletRequest request, ServletResponse response) thorws IOException, ServletException

处理HTTP请求:

public ActionForward execute(ActionMapping action, ActionForm form, HttpServletRequest request, HttpServletResponse response) thorws IOException, ServletException

(2) 可以获得或设置与请求相关联的区域:

public Local getLocal(HttpServletRequest request)

public void setLocal(HttpServletRequest request, Local local)

(3) 为应用程序获得消息资源:

public MessageResources getResources()

(4) 检查用户是否点击表单上的“取消”键,如果是,返回true:

public Boolean isCancelled(HttpServletRequest request)

(5) 当应用程序发生错误时,Action类存储错误信息:

public void saveErrors(HttpServletRequest request, ActionErrors errors)

6.DispatchAction类:

Struts提供了多种Action供选择使用。普通的Action 只能通过调用execute执行一项任务,而DispatchAction可以根据配置参数执行,而不是仅进入execute()函数,这样可以执行多种 任务。如insert,update等。LookupDispatchAction可以根据提交表单按钮的名称来执行函数。

struts1 核心类的更多相关文章

  1. cesium核心类Viewer简介

    1.简单描述Viewer Viewer类是cesium的核心类,是地图可视化展示的主窗口,cesium程序应用的切入口,扮演必不可少的核心角色. 官网的英文解析如下: A base widget fo ...

  2. Webwork 学习之路【03】核心类 ServletDispatcher 的初始化

    1. Webwork 与 Xwork 搭建环境需要的的jar 为:webwork-core-1.0.jar,xwork-1.0.jar,搭建webwork 需要xwork 的jar呢?原因是这样的,W ...

  3. Hibernate核心类用法-使用Transaction管理事务

    一个典型的事务应该使用下面的形式 在创建完Session对象后即使用beginTransaction()启动事务 从此开始直到commit()之间的代码 都会处于同一个事务中 这两个函数之间所有的数据 ...

  4. 理解Lucene索引与搜索过程中的核心类

    理解索引过程中的核心类 执行简单索引的时候需要用的类有: IndexWriter.ƒDirectory.ƒAnalyzer.ƒDocument.ƒField 1.IndexWriter IndexWr ...

  5. android的消息处理有三个核心类:Looper,Handler和Message。

    android的消息处理机制(图+源码分析)——Looper,Handler,Message   作为 一名android程序员,我学习android的一大乐趣是可以通过源码学习google大牛们的设 ...

  6. codeigniter框架扩展核心类---实现前台后台视图的分离

    1. 扩展核心类,主要作用就是扩展系统现在的功能. 为前台增加独立的视图文件夹: a. 自定义路径常量 :在application ->config/  constants.php中增加 /*m ...

  7. Activiti源码分析(框架、核心类。。。)

    http://jiangwenfeng762.iteye.com/blog/1338553 Activiti是业界很流行的java工作流引擎,关于Activiti与JBPM5的关系和如何选择不是本文要 ...

  8. Spring Security——核心类简介——获得登录用户的相关信息

    核心类简介 目录 1.1     Authentication 1.2     SecurityContextHolder 1.3     AuthenticationManager和Authenti ...

  9. lucene原理及源码解析--核心类

    马云说:大家还没搞清PC时代的时候,移动互联网来了,还没搞清移动互联网的时候,大数据时代来了. 然而,我看到的是:在PC时代搞PC的,移动互联网时代搞移动互联网的,大数据时代搞大数据的,都是同一伙儿人 ...

随机推荐

  1. JavaScript基础——理解变量作用域

    一旦你开始在JavaScript应用程序中添加条件.函数和循环,就需要理解变量作用域.变量作用域规定了如何确定正在执行的代码行上的一个特定变量名的值. JavaScript允许你既定义全局版本又定义局 ...

  2. 基于spring4.0配置分布式ehcache,以及相关使用

    说明:本文是基于RMI手动同步的方式,使用程序动态注入配置缓存,抛弃传统的ehcache.xml配置方式 1,注入cacheManager管理所有缓存,添加各个缓存名及相关参数配置: 思路大致是: 在 ...

  3. hdu 1556:Color the ball(线段树,区间更新,经典题)

    Color the ball Time Limit: 9000/3000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)To ...

  4. RTP/RTCP的时间同步机制

    转自:http://blog.csdn.net/leesphone/article/details/5571972 RTP支持传送不同codec的steaming,不同codec的clock rate ...

  5. Centos7-mqtt消息中间件mosquitto的安装和配置

    在以前发布的博客"菜鸟是如何打造智能家居系统的"文章最后我提到了使用MQTT协议作为云平台和设备之间的通信协议以达到消息传递的实时性,手机的消息推送也大多基于这种平台,首先搬来一段 ...

  6. 信号通讯编程,王明学learn

    信号通讯编程 在Linux系统中,信号(signal)同样也是最为古老的进程间通信机制. 一.信号类型 Linux系统支持的所有信号均定义在/usr/include/asm/signal.h(展示), ...

  7. 注解:【有连接表的】Hibernate单向N->N关联

    Person与Address关联:单向N->N,[有连接表的] #和单向1->N关联代码完全相同,控制关系的一端需要增加一个set类型的属性,被关联的持久化实例以集合形式存在. #N-&g ...

  8. customTextbox

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.W ...

  9. 驱动开发之 创建线程函数PsCreateSystemThread

    PsCreateSystemThread 创建一个执行在内核模式的系统线程. 注意:创建线程必须用函数PsTerminateSystemThread强制线程结束.否则该线程是无法自动退出的. 函数原型 ...

  10. 安卓图表引擎AChartEngine(三) - 示例源码折线图、饼图和柱状图

    折线图: package org.achartengine.chartdemo.demo.chart; import java.util.ArrayList; import java.util.Lis ...