struts1 核心类
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 核心类的更多相关文章
- cesium核心类Viewer简介
1.简单描述Viewer Viewer类是cesium的核心类,是地图可视化展示的主窗口,cesium程序应用的切入口,扮演必不可少的核心角色. 官网的英文解析如下: A base widget fo ...
- Webwork 学习之路【03】核心类 ServletDispatcher 的初始化
1. Webwork 与 Xwork 搭建环境需要的的jar 为:webwork-core-1.0.jar,xwork-1.0.jar,搭建webwork 需要xwork 的jar呢?原因是这样的,W ...
- Hibernate核心类用法-使用Transaction管理事务
一个典型的事务应该使用下面的形式 在创建完Session对象后即使用beginTransaction()启动事务 从此开始直到commit()之间的代码 都会处于同一个事务中 这两个函数之间所有的数据 ...
- 理解Lucene索引与搜索过程中的核心类
理解索引过程中的核心类 执行简单索引的时候需要用的类有: IndexWriter.Directory.Analyzer.Document.Field 1.IndexWriter IndexWr ...
- android的消息处理有三个核心类:Looper,Handler和Message。
android的消息处理机制(图+源码分析)——Looper,Handler,Message 作为 一名android程序员,我学习android的一大乐趣是可以通过源码学习google大牛们的设 ...
- codeigniter框架扩展核心类---实现前台后台视图的分离
1. 扩展核心类,主要作用就是扩展系统现在的功能. 为前台增加独立的视图文件夹: a. 自定义路径常量 :在application ->config/ constants.php中增加 /*m ...
- Activiti源码分析(框架、核心类。。。)
http://jiangwenfeng762.iteye.com/blog/1338553 Activiti是业界很流行的java工作流引擎,关于Activiti与JBPM5的关系和如何选择不是本文要 ...
- Spring Security——核心类简介——获得登录用户的相关信息
核心类简介 目录 1.1 Authentication 1.2 SecurityContextHolder 1.3 AuthenticationManager和Authenti ...
- lucene原理及源码解析--核心类
马云说:大家还没搞清PC时代的时候,移动互联网来了,还没搞清移动互联网的时候,大数据时代来了. 然而,我看到的是:在PC时代搞PC的,移动互联网时代搞移动互联网的,大数据时代搞大数据的,都是同一伙儿人 ...
随机推荐
- Loadrunner之API测试
//API函数 web_submit_data web_custom_request //支持https请求 web_set_sockets_option("SSL_VERSION&qu ...
- C#调用C++DLL的小总结5---和C++的DLL的联合调试
http://fpcfjf.blog.163.com/blog/static/5546979320134922938373/ http://blog.csdn.net/jiangxinyu/artic ...
- 与你相遇好幸运,Waterline的多表关联
>一对一关联 表示一个模型可能只与另一个模型关联.为了使模型知道它与其他哪些模型关联,外键必需包含在记录中.. http://imfly.github.io/sails-docs/concept ...
- 对Java内存模型即JMM的理解
类似物理上的计算机系统,Java虚拟机规范中也定义了一种Java内存模型,即Java Memory Model(JMM),来屏蔽掉各种硬件和操作系统的内存访问差异,以实现让Java程序在各种平台下都能 ...
- 重温WCF之构建一个简单的WCF(一)(1)通过控制台和IIS寄宿服务
一.理解什么是WCFWCF就是.NET平台下各种分布式技术的集成,并提供了一套统一的编程接口 二.WCF的定义WCF(Windows Communication Foundation)是微软为构建面向 ...
- Delphi的枚举类型
参考:http://blog.csdn.net/kissdeath/article/details/2060573 Delphi程序不仅可以用于数值处理,还更广泛的用于处理非数值的数据.例如:性别.月 ...
- Linux/centos下安装riak
必备的组件: gccgcc-c++glibc-develmakepam-devel 使用yum安装相关组件 sudo yum install gcc gcc-c++ glibc-devel make ...
- JqueryEasyUI 解决IE下datagrid无法刷新的问题 分类: JavaScript JqueryEasyUI 2014-09-20 10:05 510人阅读 评论(1) 收藏
问题描述: 在使用JqueryEasyUI 时,发现在IE下$('#table').datagrid('reload');无效,数据并没有被刷新,究其原因,是因为刷新时,datagrid请求的url没 ...
- PHP检测终端设备是平板、手机还是电脑
<?php $ua = $_SERVER['HTTP_USER_AGENT']; function userAgent($ua){ $iphone = strstr(strtolower($ua ...
- PHPCMS V9 点击量排行调用方法
首先调用的标签代码如下: {pc:content action=”sitehits” siteid=”4″ num=”10″ order=”views DESC” cache=”3600″} {loo ...