`
齐晓威_518
  • 浏览: 618152 次
  • 性别: Icon_minigender_1
  • 来自: 郑州
社区版块
存档分类
最新评论

struts1和struts2的区别

 
阅读更多
1.struts1是单实例多线程编程模式,有安全问题;struts2是多实例单线程。

2.struts1是侵入式的即依赖框架,使用了框架大量的API,struts2是非侵入式的。

3.struts1的action类必须直接或间接继承Action接口,struts2的action类可以是普通的JavaBean。

4.struts1中使用actionForm不能直接传递给DaO层,必须进行相应转换,struts2没有actionForm.

5.struts2测试简单,进行简单测试无需启动Web服务器。

6.struts1的表现层只支持jsp技术,struts2支持jsp技术还支持支持FreeMarker、Velocity等模板技术

所谓的单实例多线程,即一个实例处理多个请求.


单实例通俗的讲就是一个对象的实例在整个应用生命周期里只生成一次,所有的请求(方法调用)都是由这个实例处理。

多实例就是一个对象在应用里生成多个实例,所有的请求可能有不同的实例进行处理。


上述提到线程安全的?
借用一位仁兄博客里的话:”如果你的代码所在的进程中有多个线程在同时运行,而这些线程可能会同时运行这段代码。如果每次运行结果和单线程运行的结果是一样的,而且其他的变量的值也和预期的是一样的,就是线程安全的。
故名思议:
通常是指线程间,操作共用的变量,不会造成混乱。加了 synchronized 是让线程锁定、别的线程等待


Struts2是多线程的,Struts2与容器无关,当一个请示过来时都会创建一个实例,

这里的实例不是ActionServlet,Struts2中创建的实例是我们自己创建的普通的类。



多线程是说一个程序内部同时执行多个操作 比如 你在使用一个界面来对数据库进行操作 当你点击了commit或者其他命令时,这时候程序会开始执行数据库操作命令 假如 这个执行时间很长 那么

1,单线程的情况:程序会等待数据库操作执行完 然后才能执行其他操作

2,多线程的情况:程序会有一个线程去执行数据库操作,但同时,你还可以进行其他操作



打个比喻:单实例就像你买火车票时只有一个售票员,所有旅客买票都得通过他。多实例就是有多个售票员,可以向不同的售票员请求服务。





所以总结如下:
Struts1要求Actio继续一个类。

Struts2仅需要Action实现一个接口,或者Action类都不要,仅仅需要有一个包含execute方法的普通简单java类即可。

Struts1中 Action是单线程的,也就是说线程共享的,既然线程共享,那当然是不安全的啦。

Struts2 Action对象为每一个请求产生一个实例,不存在线程共享,所以也就不存在线程安全问题。

Struts1中Action离不开Servlet API,

Struts2中的Action可以只需要一个简单的java类就行了,API不API跟它无关,它才不依赖。
分享到:
评论

相关推荐

    Struts1和Struts2区别

    下面我们将深入探讨Struts1和Struts2的区别。 1. 设计模式: - **Struts1**:基于Front Controller模式,只有一个Servlet(ActionServlet)处理所有请求。它使用Plug-In和Dispatcher机制来实现业务逻辑和视图的...

    struts1和struts2区别

    Struts1和Struts2是两个非常著名的Java Web框架,它们在处理MVC(Model-View-Controller)架构方面有着显著的区别。以下是关于这两个框架在关键特性上的对比: 1. **Action类**: - **Struts1**:要求Action类继承...

    struts1 和 Struts2 区别

    Struts1 和 Struts2 是两个非常著名的Java Web应用程序框架,它们都是基于Model-View-Controller(MVC)设计模式的。尽管它们都是用于构建Web应用程序的,但在很多方面存在显著的区别。 首先,Struts1 是一个较早的...

    Struts1和Struts2的区别和对比

    Struts1和Struts2是两个非常著名的Java Web框架,它们都用于构建MVC(Model-View-Controller)架构的应用程序。尽管它们都是Struts家族的一部分,但它们在设计哲学和实现方式上存在显著差异。 首先,从Action类的...

    struts1和struts2的区别(详细)

    ### Struts1与Struts2的主要区别 #### 一、Action执行机制的不同 - **Struts1**: 在Struts1框架中,Action是基于单例模式的,这意味着所有的请求都会共享同一个Action实例。这就导致了如果在Action中保存实例变量...

    Struts1和Struts2的区别和对比.txt

    ### Struts1与Struts2的区别与对比 #### 概述 Struts1与Struts2是基于Java的两种流行的Web应用框架,它们都遵循MVC(Model-View-Controller)设计模式,用于构建结构化的Web应用程序。Struts1是早期版本,在2000...

    Struts2和Struts1的什么区别

    在探讨Struts2与Struts1的区别时,我们需深入理解这两个框架的设计理念、架构模式以及它们在实际应用中的表现差异。以下将从多个角度详细分析这两种流行Java Web框架的不同之处。 ### 1. **Action类的区别** #### ...

    Struts2与Struts1区别

    Struts2 和 Struts1 是两个著名的 Java Web 开发框架,它们都出自 Apache Software Foundation,但有着显著的区别。Struts1 是早期的 MVC 框架,而 Struts2 则是在 WebWork 框架的基础上发展起来的,它吸收了 Struts...

    Struts1与Struts2本质区别

    ### Struts1与Struts2本质区别 #### 1. 在Action实现类方面的对比 - **Struts 1**:要求Action类必须继承一个抽象基类`Action`,这种设计方式意味着开发者必须按照预设的结构来编写代码,灵活性较低。这种通过抽象...

    转:struts1与struts2的区别

    ### Struts1与Struts2的主要区别 #### 1. Action类的设计差异 - **Struts1**: 在Struts1框架中,Action类必须继承自一个抽象类`org.apache.struts.action.Action`。这种方式可能导致的问题是代码灵活性较低,尤其...

    Struts2和Struts1的区别,详细点,主要说说Struts2

    ### Struts2与Struts1的主要区别 #### Struts2架构设计与实现方式 - **Struts2**在设计上采用了更加灵活的方式,每个请求都对应一个实例化的Action对象,而不是像**Struts1**那样在整个请求周期内共享同一个Action...

    struts1.x和struts2.x区别

    ### Struts1.x与Struts2.x的主要区别 在深入探讨Struts1.x与Struts2.x的区别之前,我们先来了解一下这两个框架的基本背景。Apache Struts是用于构建企业级Web应用程序的开源框架,它提供了MVC(模型-视图-控制器)...

    程序员必看的书籍Struts1和Struts2的区别

    通过对比分析Struts1和Struts2的特点,我们可以更好地理解这两种框架之间的区别,并能够根据实际项目需求做出合理的选择。这对于软件开发人员来说至关重要,能够帮助他们在日常工作中更高效地解决问题。

    struts与struts2的区别

    Struts1使用的是JSP和Tiles框架来组织视图,而Struts2引入了FreeMarker和Velocity等模板引擎,提供了更多样化的视图渲染方式。 **5. 配置方式:** Struts1的配置主要在XML文件中完成,而Struts2引入了更简洁的注解...

    struts1和struts2的jar包

    Struts1和Struts2是两个不同的版本,它们各自拥有独特的特性和功能,但在Java Web开发领域都扮演了重要角色。 **Struts1** Struts1是最早的版本,它在2001年发布,是基于ApacheJakarta项目的一个框架。Struts1的...

Global site tag (gtag.js) - Google Analytics