(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区别?的更多相关文章

  1. Struts1与Struts2的12点区别

    Struts1与Struts2的12点区别  1) 在Action实现类方面的对比:Struts 1要求Action类继承一个抽象基类:Struts 1的一个具体问题是使用抽象类编程而不是接口.Str ...

  2. Struts1和Struts2的区别和对比(完整版)

    Struts2其实并不是一个陌生的Web框架,Struts2是以Webwork的设计思想为核心,吸收了Struts1的优点,因此,可以认为Struts2是Struts1和Webwork结合的产物. 简 ...

  3. Struts2五、Struts1与Struts2的区别

    Struts1和Struts2的区别和对比: Action 类:  • Struts1要求Action类继承一个抽象基类.Struts1的一个普遍问题是使用抽象类编程而不是接口,而struts2的Ac ...

  4. Struts1和Struts2的区别和对比

    Struts1和Struts2的区别和对比: Action 类: • Struts1要求Action类继承一个抽象基类.Struts1的一个普遍问题是使用抽象类编程而不是接口. • Struts 2  ...

  5. struts1和struts2和springMVC的区别和介绍

    MVC是web开发常用的模式,M即模型层(Model):主要由javabean来实现.V即视图层(View):主要由jsp.velocity.freemarker等.C即控制层(Controller) ...

  6. Struts在Web.xml中的配置及Struts1和Struts2的区别

    (1)配置Struts的ActionServlet     <servlet>元素来声明ActionServlet    <servlet-name>元素:用来定义Servle ...

  7. 浅析Struts1和Struts2的Action线程安全问题 转

    浅析Struts1和Struts2的Action线程安全问题  转 http://blog.csdn.net/virgoboy2004/article/details/5876133 [问题描述]最近 ...

  8. Struts1、Struts2和SpringMVC剖析【转载】

    前段框架用了不少,今天就来做个总结.网上关于Struts1.Struts2.SpringMVC的文章有很多,这里的内容就是基于它们,来做个比较. 这三个框架是按照上面的顺序,依次出现的,它们都是对MV ...

  9. Struts1和Struts2对照

    最近学习Struts1和Struts2.好多人.提到非常多的信息. Struts2不从Struts1进化. Struts2的前身WebWork. 呢,看了一些资料,下边就来比較比較. 一.架构分析 S ...

随机推荐

  1. js制作留言板

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  2. oa_mvc_easyui_删除(6)

    1.删除列,添加a标签,绑定参数 <a href="javascript:void(0)" class="delete" ids="@newli ...

  3. dedecms sql 替换 或 删除

    UPDATE dede_archives SET writer='你需要修改的作者' WHERE writer=''; UPDATE dede_archives SET source='你需要修改的来 ...

  4. python、mysql三-1:存储引擎

    一 什么是存储引擎 mysql中建立的库===>文件夹 库中建立的表===>文件 现实生活中我们用来存储数据的文件有不同的类型,每种文件类型对应各自不同的处理机制:比如处理文本用txt类型 ...

  5. vps 11步移站步骤笔记

    移站是经常的事,现在把步骤写上,防止忘记命令 1.登录SSH 2.打包数据库,phpmyadmin中备份数据库,导入新数据库,数据库中域名链接进行相应替换 获取phpmyadmin root密码 ca ...

  6. POJ 1734 无向图最小环/有向图最小环

    给定一张图,求图中一个至少包含三个点的环,环上的点不重复,并且环上的边的长度之和最小. 点数不超过100个 输出方案 无向图: /*Huyyt*/ #include<bits/stdc++.h& ...

  7. nginx 常用的命令和配置文件

    常用的命令 进入 nginx 目录中 cd  /usr/local/nginx/sbin 1.查看 nginx 版本号  ./nginx -v  2.启动 nginx  ./nginx  3.停止 n ...

  8. java poi

    import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; import org.a ...

  9. GoAccess安装及分析nginx实时日志

    GoAccess是一个基于终端的快速日志分析器.其核心思想是实时快速分析和查看Web服务器统计信息,而无需使用您的浏览器(如果您希望通过SSH快速分析访问日志,或者只是喜欢在终端中工作),终端输出是默 ...

  10. HDU - 6582 Path (最短路+最小割)

    题意:给定一个n个点m条边的有向图,每条边有个长度,可以花费等同于其长度的代价将其破坏掉,求最小的花费使得从1到n的最短路变长. 解法:先用dijkstra求出以1为源点的最短路,并建立最短路图(只保 ...