Struts2笔记(三)
来源:互联网 发布:焉足以知是且非邪的且 编辑:程序博客网 时间:2024/05/16 09:12
Struts2来源于Webwork2,并且与struts1.x完全不兼容
Struts2是一个运行于Web容器(例如在java开发中常见的WEB容器tomcat、jetty)的表示层框架,
其核心内容就是和Web容器打交道,作用是帮助我们处理http请求。
运行于WEB容器的程序 必须遵循servlet标准或jsp标准 struts2所支持的servlet标准最低版本要求是2.4相应的jsp标准
的最低版本是2.0
Struts2通过扩展实现servlet标准来处理http请求。
Struts2的宏观视图
这里我们将站在整个框架的角度,了解程序的运行可以划分为哪些逻辑运行主线 首先我们来看
Struts2的入口
Struts2的核心入口程序
struts2的入口trutsPrapareAndExecuteFilter实际上是一个实现了Filter接口来进行Http请求处理
根据servlet标准中Filter中的生命周期的有关知识 我们知道Filter中的init方法在web容器启动时
Struts2中的入口类也是一个Filter 所以Struts2的初始化,会在init方法,也就是web容器启动时驱动执行
而且只在web应用时启动一次,这也是Struts2的第一条主线 当Struts2初始化以后 所有的http请求通过trutsPrapareAndExecuteFilter
中的doFilter方法来执行 这是第二条主线
struts2的初始化和处理请求时两条完全没有交叉的逻辑主线 他们之间在完全不同的时间完成没有任何交集
struts2的初始化工作主要包括对框架内部的许多内置对象的创建和缓存 以及控制框架运行的必要条件
这里说的运行环境不是指Struts2的外部运行环境(外部运行环境即web容器)而是指建立在了Web容器
之上框架运行处理http请求时所必须的内置对象的集合 为了更好的对这些内置对象进行管理Struts2
引入了框架级别的容器的概念,因而Strutsw2的初始化主线 实际上就是这个容器的初始化过程
Struts2的http请求主线
struts2处理http请求主线分为两个不同的执行阶段
第一阶段-----http请求预处理
在这个阶段,程序执行的控制权在Struts2手上为每个http请求进行预处理 为真正的业务逻辑执行
做必要的数据环境和运行环境做准备 程序代码在这个阶段有一个非常显著的特点:依赖于WEB容器
并时刻将与WEB容器打交道作为主要工作
第二阶段----XWrok执行业务逻辑
在这个阶段 程序执行的控制权被移交给XWork Struts2在完成http请求的预处理以后。将http请求中
的数据封装成普通的java对象,并由XWork负责执行具体的业务逻辑
程序代码在这个阶段不依赖于Web容器 完全有XWork处理
也就是说第一阶段和第二阶段是一个完全解耦合的过程 XWork处理业务逻辑是并不依赖外部的任何环境
因此,严格意义上的Struts2实际上是由两个不同的框架组成,一个是真正意义上的Struts2 一领一个是
XWork从职责上来说XWork才是真正实现MVC的框架 Struts2的工作是在对http请求进行一定的处理后 委托XWork完成真正的业务逻辑处理
将Web容器和MVC分离 是Struts2区别于其他Web框架的重要特性。
- Struts2笔记(三)
- Struts2.1笔记(三):Struts2基础
- Struts2学习笔记(三)
- struts2-学习笔记(三)
- Struts2学习笔记(三)
- Struts2学习笔记(三)
- 【笔记】Struts2学习笔记(三)--Action
- Struts2学习笔记(三) 输入校验
- Struts2学习笔记(三)之StrutsTypeConversion
- JavaEE笔记(三)Struts2 拦截器
- Struts2 基础学习笔记(三)
- Struts2学习笔记三
- Struts2学习笔记(三)
- struts2学习笔记三
- Struts2学习笔记(三)
- Struts2开发笔记三
- struts2标签学习笔记三
- 传智播客struts2学习笔记(三)
- Ubuntu14.04LTS下使用eclipse搭建Cocos2d-x的Android环境
- Qt Quick实现的疯狂算数游戏
- 用drawAtPoint绘制文字
- 关于 UIWebView reload 失效的 一种情况
- java安装与eclips快捷键
- Struts2笔记(三)
- iOS开发 addChildViewController的应用
- IOS多线程编程之Grand Central Dispatch(GCD)介绍和使用
- postgre crosstab函数 查询条件传入变量写法
- Javascript通过bind()掌控this
- dlopen dlsym dlclose解析
- LeetCode(166) Fraction to Recurring Decimal
- OJ循环——用递归方法求 f(n)
- Zookeeper集群配置部署