Struts1与Struts2区别?
(1)Struts1执行过程:
<1>Web容器启动的时候ActionServlet被初始化,加载struts-config.xml配置文件。
<2>浏览器发送请求到ActionServlet时,ActionServlet对请求进行处理。根据请求的路劲和配置信息找到对应的Action和ActionForm。
<3>在确定将要调用的Action和对应的ActionForm后,将请求中包含的值填充到ActionForm中。在调用Action的execute方法前ActionServlet需要准备好ActionMapping参数。
<4>Action调用业务逻辑方法得到返回值,并返回ActionForward对象。
<5>控制权重新回到ActionServlet,ActionServlet根据Action返回的ActionForward对象转发到相应的页面。
<6>处理结果返回给浏览器。
(2)Struts2执行过程:
<1>当WEB容器收到一个请求时,它将请求传递给一个标准的过滤器链(如ActionContentCleanUp)。
<2>FilterDispatcher被调用,它调用ActionMapper确定请求调用哪个Action,ActionMapper返回一个收集了Action信息的ActionMapping对象
<3>FilterDispatcher将控制权委派给ActionProxy,ActionProxy调用配置管理器(ConfigurationManager)从配置文件中读取配置信息,然后创建ActionInvocation对象,ActionInvocation被创建的同时,填充了需要的所有的对象和信息,它在调用Acton之前会依次调用所用配置的拦截器(Intercepter)。
<4>一旦Action执行返回结果字符串,ActionInvocation负责根据struts.xml中的配置查找结果字符串对应的Result,然后执行这个Result,一般Resul会调用一些模板(JSP)来呈现页面。
<5>之后拦截器会被再次执行(顺序和Action执行之前相反),最后响应,被返回给在web.xml中配置的哪些过滤器(FilterDispatcher等)。
(3)Struts1与Struts2区别:
<1>struts1要求Action类继承一个抽象基类,而不是接口。
struts2的action类可以实现一个action接口,也可以实现其他接口。
<2>sturts1 的action是单例模式,线程是不安全的。
struts2 的action线程是安全的,action为每一个请求都生成了一个实例。
<3>sturts1过去依赖serlet API,不容易测试。
struts2不依赖于容器,允许Action脱离容器单独被测试。
<4>Struts1使用ActionForm对象捕获输入。所有的ActionForm必须继承一个基类。
Struts2直接使用Action属性作为输入属性,消除了对第二个输入对象的需求。
<5>Struts1整合了JSTL,因此使用JSTL EL。这种EL有基本对象图遍历,但是对集合和索引属性的支持很弱。
Struts2可以使用JSTL,但是也支持一个更强大和灵活的表达式语言OGNL(Object Graph Notation Language)。
<6>Struts1使用标准JSP机制把对象绑定到页面中来访问。
Struts2使用ValueStack技术使taglib能够访问值而不需要把页面(view)和对象绑定起来。
<7>Struts1的ActionForm属性通常都是String类型。
Struts2使用OGNL进行类型转换提供基本和常用对象的转换器。
<8>Struts1支持在ActionForm的validate方法中手动校验,或通过Commons Validator的扩展来校验。
Struts2支持通过validate方法和XWork校验框架来进行校验。
<9>Struts1支持每一个模块有单独的Request Processors(生命周期),但是模块中的所有Action必须共享相同的生命周期。
Struts2支持通过拦截器堆栈(Interceptor Stacks)为每一个Action创建不同的生命周期,堆栈能够根据需要和不同的Action一起使用。
Struts1与Struts2区别?的更多相关文章
- Struts1与Struts2的12点区别
Struts1与Struts2的12点区别 1) 在Action实现类方面的对比:Struts 1要求Action类继承一个抽象基类:Struts 1的一个具体问题是使用抽象类编程而不是接口.Str ...
- Struts1和Struts2的区别和对比(完整版)
Struts2其实并不是一个陌生的Web框架,Struts2是以Webwork的设计思想为核心,吸收了Struts1的优点,因此,可以认为Struts2是Struts1和Webwork结合的产物. 简 ...
- Struts2五、Struts1与Struts2的区别
Struts1和Struts2的区别和对比: Action 类: • Struts1要求Action类继承一个抽象基类.Struts1的一个普遍问题是使用抽象类编程而不是接口,而struts2的Ac ...
- Struts1和Struts2的区别和对比
Struts1和Struts2的区别和对比: Action 类: • Struts1要求Action类继承一个抽象基类.Struts1的一个普遍问题是使用抽象类编程而不是接口. • Struts 2 ...
- struts1和struts2和springMVC的区别和介绍
MVC是web开发常用的模式,M即模型层(Model):主要由javabean来实现.V即视图层(View):主要由jsp.velocity.freemarker等.C即控制层(Controller) ...
- Struts在Web.xml中的配置及Struts1和Struts2的区别
(1)配置Struts的ActionServlet <servlet>元素来声明ActionServlet <servlet-name>元素:用来定义Servle ...
- 浅析Struts1和Struts2的Action线程安全问题 转
浅析Struts1和Struts2的Action线程安全问题 转 http://blog.csdn.net/virgoboy2004/article/details/5876133 [问题描述]最近 ...
- Struts1、Struts2和SpringMVC剖析【转载】
前段框架用了不少,今天就来做个总结.网上关于Struts1.Struts2.SpringMVC的文章有很多,这里的内容就是基于它们,来做个比较. 这三个框架是按照上面的顺序,依次出现的,它们都是对MV ...
- Struts1和Struts2对照
最近学习Struts1和Struts2.好多人.提到非常多的信息. Struts2不从Struts1进化. Struts2的前身WebWork. 呢,看了一些资料,下边就来比較比較. 一.架构分析 S ...
随机推荐
- [Nest] 03.nest之提供者 provider
提供者 provider 提供程序是 Nest 的一个基本概念.许多基本的 Nest 类可能被视为提供者 - service,repository, factory, helper 等等. 他们都可以 ...
- 机器学习-SVM-手写识别问题
机器学习-SVM-手写识别问题 这里我们解决的还是之前用KNN曾经解决过的手写识别问题(https://www.cnblogs.com/jiading/p/11622019.html),但相比于KNN ...
- 同步(Synchronous)和异步(Asynchronous)方法的区别
同步(Synchronous)和异步(Asynchronous)方法的区别 在讲之前,我们先来看<Computer Organization>中对于同步和异步的一个例子: 同步读写和异步读 ...
- CF1151F Sonya and Informatics
cf luogu 我们最终要的序列一定是前面全是0,后面全是1,假设总共\(m\)个0,那么这等价于前\(m\)位0的个数为\(m\).当然一开始可能数量没有\(m\) 那就把前\(m\)位0的数量作 ...
- centos安装配置php
PHP的安装同样需要经过环境检查.编译和安装3个步骤. 1.首先用百度搜索 “PHP:Downloads”, 点击第一个网页: 选择5.5.37版本,选择 .tar.gz 格式的文件: 来到镜像列表网 ...
- 记录一次k8s环境尝试过程(初始方案,现在已经做过很多完善,例如普罗米修斯)
记录一次Team k8s环境搭建过程(初始方案,现在已经做过很多完善,例如普罗米修斯) span::selection, .CodeMirror-line > span > span::s ...
- cmake编译c++程序
当在Linux系统下编写程序时候,如果没有类似于visual studio.vs code等IDE(集成开发环境)时,如何编译.运行程序呢?一种方法是编写makefile文件,用makefile文件管 ...
- 模拟赛小结:2017-2018 ACM-ICPC Nordic Collegiate Programming Contest (NCPC 2017)
比赛链接:传送门 本场我们队过的题感觉算法都挺简单的,不知道为啥做的时候感觉没有很顺利. 封榜后7题,罚时1015.第一次模拟赛金,虽然是北欧的区域赛,但还是有点开心的. Problem B Best ...
- Gym - 101908H Police Hypothesis (树链剖分/LCT+字符串哈希)
题意:有一棵树,树上每个结点上有一个字母,有两种操作: 1)询问树上两点u,v间有向路径上有多少个字母和某个固定的字符串相匹配 2)将结点u的字母修改为x 树剖+线段,暴力维护前缀和后缀哈希值(正反都 ...
- 跨站请求伪造(csrf),django的settings源码剖析,django的auth模块
目录 一.跨站请求伪造(csrf) 1. 什么是csrf 2. 钓鱼网站原理 3. 如何解决csrf (1)思路: (2)实现方法 (3)实现的具体代码 3. csrf相关的装饰器 (1)csrf_p ...