全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

Struts1和struts2的区别_动力节点Java学院整理

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

简单来说二者的区别是:   

     一个是Stuts1 ,一个是Stuts2,这是最大的区别,技术方面,Stuts1有个核心控制器,但是只提供了一个接口,也就是execute,还要配置actionform之类的,很麻烦,所以依赖性比较强;而Stuts2是针对拦截器开发的,也就是所谓的AOP思想,可以配置多个action,用起来比较方便,但是因为请求之前的拦截器有一些注入的操作,速度相对Stuts1来说慢一点。

一、MVC简介

      Struts2是一个兼容Struts1和WebWork的MVC框架,既然,提到了MVC框架,就不得不对MVC框架做一个简单介绍,仅限于简单介绍,如果,想了解更多的MVC的知识可以查看相关的文档,或者找一本Struts1的书籍,相信上面关于MVC的篇幅不会很少。言归正传,其实,Java目前出现的这些框架而言,其最终目的都是为了接触耦合,不论是Spring、Hibernate或MVC框架,目的都是为了接触耦合增加复用。MVC接触的是View和Model间的耦合。  

      MVC包含三个基础部分:Model、View和Controller,这三个部分以最小的耦合协同工作,以增加程序的可扩展性和可维护性。各个部分的实现技术可以总结如下:

        1)Model:JavaBean、EJB的EntityBean
        2)View:JSP、Struts的TagLib
        3)Controller:Struts的ActionServlet、Action

概括起来MVC的优点主要有一下方面:

        1)多个视图可以对应一个模型。按MVC设计模式,一个模型对应多个视图,可以减少代码的复制及代码的维护量,一旦模型发生改变,也易于维护
        2)模型返回的数据与显示逻辑分离。模型数据可以应用任何的显示技术,例如,使用JSP页面、Velocity模板或者直接产生Excel文档等
        3)应用被分隔为三层,降低了各层之间的耦合,提供了应用的可扩展性
        4)控制层的概念也很有效,由于它把不同的模型和不同的视图组合在一起,完成不同的请求。因此,控制层可以说是包含了用户请求权限的概念
        5)MVC更符合软件工程化管理的精神。不同的层各司其职,每一层的组件具有相同的特征,有利于通过工程化和工具化产生管理程序代码

         对于MVC的概念性的东西也就废话到此,其关键的地方就是各个模块的实现技术分别是什么。

二、Struts2简介

        Struts2既然是从Struts1发展而来,但实际上Struts2与Struts1在框架的设计思想上面还是有很大的区别,Struts2是以WebWork的设计思想为核心,为什么Struts2不沿用Struts1的设计思想,毕竟Struts1在目前的企业应用中还是有非常大的市场在的,那么,来看下Struts1的一些缺点吧:

        1)支持的表现层技术单一
        2)与Servlet API严重耦合,这点可以从Action的Execute的方法声明里面就可以看的出来
        3)代码依赖Struts1 API,有侵入性,这点可以从写Action类和FormBean的时候看的出来,Action必须实现Struts的Action类

        而Struts2之所以以WebWork的设计思想为其核心,一点就是最近WebWork的上升势头,再就是WebWork没有Struts1上面的那些缺点,更符合MVC的设计思想,也更利于代码的复用。

        基于以上介绍可以看的出,Struts2体系结构与Struts1的体系结构有很大的差别,Struts1是使用ActionServlet做为其中心处理器,Struts2则使用一个拦截器(FilterDispatcher)做为其中心处理器,这样做的一个好处就是将Action类和Servlet API进行了分离。

        Struts2的简单处理流程如下:

        1)浏览器发送请求
        2)中心处理器根据struts.xml文件查找对应的处理请求的Action类
        3)WebWork的拦截器链自动对请求应用通用功能,例如:WorkFlow、Validation等功能
        4)如果Struts.xml文件中配置Method参数,则调用Method参数对应的Action类中的Method方法,否则调用通用的Execute方法来处理用户请求
         5)将Action类中的对应方法返回的结果响应给浏览器

三、Struts2与Struts1对比

         1)Action类的实现方式:
               Struts1的Action在实现的时候必须扩展Action类或者Action的子类,Struts2的Action类实现的时候可以不用实现任何类和接口,虽然Struts2中提供一个ActionSupport类,但是,不是必须的。
          2)Struts1的Action类是单例模式,必须设计成线程安全的,Struts2则为每一个请求产生一个实例
          3)Struts1的Action类依赖与Servlet API,从其execute的方法签名可看出,execute方法有两个Servlet的参数HttpServletRequest和HttpServletResponse,Struts2则不依赖于Servlet API
          4)以为Struts1依赖于Servlet API这些Web元素,因此对Struts1的Action进行测试的时候是很困难的,需要借助与其他的测试工具,Struts2的Action可以象测试其他的一些Model层的Service类一样进行测试
           5)Struts1的Action与View通过ActionForm或者其子类进行数据传递,虽然也有LazyValidationForm这样的ActionForm的出现,但是,还是不能象其他层面那样通过一个简单的POJO进行数据传递,而Struts2将这样的奢望变成了现实
           6)Struts1绑定了JSTL,为页面的编写带来方便,Struts2整合了ONGL,也可以使用JSTL,因此,Struts2下的表达式语言更加强大

四、Struts2与WebWork对比

        Struts2实际上就是WebWork2.3,不过,Struts2还是与WebWork有少许的差别:
        1)Struts2不再支持内置IOC容器,改用Spring的IOC容器
        2)Struts2对于Webwork的一些Ajax的特性的标签改用Dojo进行替换

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。


# Struts1  # struts2  # struts2简介_动力节点Java学院整理  # struts2数据处理_动力节点Java学院整理  # struts2标签总结_动力节点Java学院整理  # Java中struts2和spring MVC的区别_动力节点Java学院整理  # 详解JAVAEE——SSH三大框架整合(spring+struts2+hibernate)  # 实例详解java Struts2的配置与简单案例  # java+jsp+struts2实现发送邮件功能  # Struts2单选按钮详解及枚举类型的转换代码示例  # 设计思想  # 多个  # 都是  # 拦截器  # 是有  # 子类  # 进行测试  # 类中  # 复用  # 的是  # 更符合  # 是一个  # 这是  # 文档  # 也有  # 为核心  # 有个  # 也就  # 各司其职  # 而来 


相关文章: 制作国外网站的软件,国外有哪些比较优质的网站推荐?  制作网站的网址是什么,请问后缀为.com和.com.cn还有.cn的这三种网站是分别是什么类型的网站?  如何在建站主机中优化服务器配置?  宝塔建站助手安装配置与建站模板使用全流程解析  c++23 std::expected怎么用 c++优雅处理函数错误返回【详解】  如何批量查询域名的建站时间记录?  c# 在高并发场景下,委托和接口调用的性能对比  如何在宝塔面板中修改默认建站目录?  南阳网站制作公司推荐,小学电子版试卷去哪里找资源好?  如何快速搭建高效WAP手机网站吸引移动用户?  可靠的网站设计制作软件,做网站设计需要什么样的电脑配置?  建站之星后台密码如何安全设置与找回?  免费制作统计图的网站有哪些,如何看待现如今年轻人买房难的情况?  制作电商网页,电商供应链怎么做?  青岛网站建设如何选择本地服务器?  单页制作网站有哪些,朋友给我发了一个单页网站,我应该怎么修改才能把他变成自己的呢,请求高手指点迷津?  公司网站制作需要多少钱,找人做公司网站需要多少钱?  如何通过云梦建站系统实现SEO快速优化?  免费公司网站制作软件,如何申请免费主页空间做自己的网站?  建站主机空间推荐 高性价比配置与快速部署方案解析  简单实现Android文件上传  广州网站制作的公司,现在专门做网站的公司有没有哪几家是比较好的,性价比高,模板也多的?  建站主机是否等同于虚拟主机?  台州网站建设制作公司,浙江手机无犯罪记录证明怎么开?  如何通过可视化优化提升建站效果?  网站制作公司哪里好做,成都网站制作公司哪家做得比较好,更正规?  如何在万网自助建站平台快速创建网站?  制作门户网站的参考文献在哪,小说网站怎么建立?  如何通过虚拟主机快速搭建个人网站?  潍坊网站制作公司有哪些,潍坊哪家招聘网站好?  独立制作一个网站多少钱,建立网站需要花多少钱?  logo在线制作免费网站在线制作好吗,DW网页制作时,如何在网页标题前加上logo?  如何在阿里云虚拟机上搭建网站?步骤解析与避坑指南  微信小程序制作网站有哪些,微信小程序需要做网站吗?  制作网站的公司有哪些,做一个公司网站要多少钱?  存储型VPS适合搭建中小型网站吗?  公司网站设计制作厂家,怎么创建自己的一个网站?  网站视频怎么制作,哪个网站可以免费收看好莱坞经典大片?  建站之星免费模板:自助建站系统与智能响应式一键生成  html制作网站的步骤有哪些,iapp如何添加网页?  广州建站公司哪家好?十大优质服务商推荐  ,购物网站怎么盈利呢?  建站之星展会模板:智能建站与自助搭建高效解决方案  北京网站制作的公司有哪些,北京白云观官方网站?  交易网站制作流程,我想开通一个网站,注册一个交易网址,需要那些手续?  网站制作专业公司有哪些,如何制作一个企业网站,建设网站的基本步骤有哪些?  如何通过商城自助建站源码实现零基础高效建站?  PHP正则匹配日期和时间(时间戳转换)的实例代码  天河区网站制作公司,广州天河区如何办理身份证?需要什么资料有预约的网站吗?  合肥做个网站多少钱,合肥本地有没有比较靠谱的交友平台? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。