structsstructs初学者必学

structs  时间:2021-07-19  阅读:()

spring和structs有什么区别

按照MVC三层架构,基本上struts是表示层部分、spring是事务层部分、hibernate是持久层(数据层)部分。

通俗点就是差不多表示层主要页面,事务层主要事务逻辑处理,持久层和数据库打交道。

struts和struts2的区别

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进行替换

struts 和 struts2 有什么区别?

你问的是哪方面呢?struts和struts2的区别可以从以下几个方面来进行了解: — 在Action实现类方面的对比:Struts 1要求Action类继承一个抽象基类;Struts 1的一个具体问题是使用抽象类编程而不是接口。

Struts 2 Action类可以实现一个Action接口,也可以实现其他接口,使可选和定制的服务成为可能。

Struts 2提供一个ActionSupport基类去实现常用的接口。

即使Action接口不是必须实现的,只有一个包含execute方法的POJO类都可以用作Struts 2的Action。

— 线程模式方面的对比:Struts 1 Action是单例模式并且必须是线程安全的,因为仅有Action的一个实例来处理所有的请求。

单例策略限制了Struts 1 Action能做的事,并且要在开发时特别小心。

Action资源必须是线程安全的或同步的;Struts 2 Action对象为每一个请求产生一个实例,因此没有线程安全问题。

— Servlet依赖方面的对比:Struts 1 Action依赖于Servlet API,因为Struts 1 Action的execute方法中有HttpServletRequest和HttpServletResponse方法。

Struts 2 Action不再依赖于Servlet API,从而允许Action脱离Web容器运行,从而降低了测试Action的难度。

当然,如果Action需要直接访问HttpServletRequest和HttpServletResponse参数,Struts 2 Action仍然可以访问它们。

但是,大部分时候,Action都无需直接访问HttpServetRequest和HttpServletResponse,从而给开发者更多灵活的选择。

— 可测性方面的对比:测试Struts 1 Action的一个主要问题是execute方法依赖于Servlet API,这使得Action的测试要依赖于Web容器。

为了脱离Web容器测试Struts 1的Action,必须借助于第三方扩展:Struts TestCase,该扩展下包含了系列的Mock对象(模拟了HttpServetRequest和HttpServletResponse对象),从而可以脱离Web容器测试Struts 1的Action类。

Struts 2 Action可以通过初始化、设置属性、调用方法来测试。

— 封装请求参数的对比:Struts 1使用ActionForm对象封装用户的请求参数,所有的ActionForm必须继承一个基类:ActionForm。

普通的JavaBean不能用作ActionForm,因此,开发者必须创建大量的ActionForm类封装用户请求参数。

虽然Struts 1提供了动态ActionForm来简化ActionForm的开发,但依然需要在配置文件中定义ActionForm;Struts 2直接使用Action属性来封装用户请求属性,避免了开发者需要大量开发ActionForm类的烦琐,实际上,这些属性还可以是包含子属性的Rich对象类型。

如果开发者依然怀念Struts 1 ActionForm的模式,Struts 2提供了ModelDriven模式,可以让开发者使用单独的Model对象来封装用户请求参数,但该Model对象无需继承任何Struts 2基类,是一个POJO,从而降低了代码污染。

— 表达式语言方面的对比:Struts 1整合了JSTL,因此可以使用JSTL表达式语言。

这种表达式语言有基本对象图遍历,但在对集合和索引属性的支持上则功能不强;Struts 2可以使用JSTL,但它整合了一种更强大和灵活的表达式语言:OGNL(Object Graph Notation Language),因此,Struts 2下的表达式语言功能更加强大。

— 绑定值到视图的对比:Struts 1使用标准JSP机制把对象绑定到视图页面;Struts 2使用“ValueStack”技术,使标签库能够访问值,而不需要把对象和视图页面绑定在一起。

— 类型转换的对比:Struts 1 ActionForm 属性通常都是String类型。

Struts 1使用Commons-Beanutils进行类型转换,每个类一个转换器,转换器是不可配置的;Struts 2使用OGNL进行类型转换,支持基本数据类型和常用对象之间的转换。

— 数据校验的对比:Struts 1支持在ActionForm重写validate方法中手动校验,或者通过整合Commons alidator框架来完成数据校验。

Struts 2支持通过重写validate方法进行校验,也支持整合XWork校验框架进行校验。

— Action执行控制的对比:Struts 1支持每一个模块对应一个请求处理(即生命周期的概念),但是模块中的所有Action必须共享相同的生命周期。

Struts 2支持通过拦截器堆栈(Interceptor Stacks)为每一个Action创建不同的生命周期。

开发者可以根据需要创建相应堆栈,从而和不同的Action一起使用。

java中的struts是什么?

struts也是一种框架,目前指struts2。

最早出现的Struts1是一个非常著名的框架,它实现了MVC模式。

Struts1简单小巧,其中最成 熟的版本是Struts1.2。

之后出现了WebWork框架,其实现技术比Struts1先进,但影响力丌如Struts1。

在框架技术丌断发展过程中,有人在WebWork 核心XWork 的基础上包装了Struts1(算是两种 框架的整合),由此,结合了Struts1的影响力和WebWork 的先进技术,Struts 2诞生了。

所以说,Struts2丌是Struts1的升级,它更像是WebWork 的升级版本

struts的优点和缺点是什么??

Struts无论是1.2还是2都是作为整个MVC结构思想中控制层的载体,优点显而易见,通过struts实现业务逻辑的抽象,将客户端数据处理封装,将数据库数据筛选转化,都是由Struts来完成的。

对于缺点,仁者见仁智者见智。

单纯的对于Struts的使用来说,1.2的缺点是要完成一项功能至少需要两个类,form和action,导致类膨胀。

2的时候虽然有效地将1.2中form和action整合,但是也同样违背了OOP抽象的基本思想。

但是现在Ajax的出现就可以忽略Struts的缺点,无所谓Form和Action。

1.2和2都可以通过Ajax的方式直接获取所需的参数,并且使用同一种方式传出所需的参数(一般使用Json的方式),这也是现在页面无刷新的基本流程。

因此,无论是1.2还是2都能满足现在Web上的全部需求,至于选择1.2还是2已经只是个人习惯的问题了。

structs初学者必学

看相应的书就可以了

structs在国内用的还是很多

但事实上已经式微了

现在java web framework 众多

谁最终会成为主流很难说 但是structs估计不行了

PacificRack 下架旧款方案 续费涨价 谨慎自动续费

前几天看到网友反馈到PacificRack商家关于处理问题的工单速度慢,于是也有后台提交个工单问问,没有得到答复导致工单自动停止,不清楚商家最近在调整什么。而且看到有网友反馈到,PacificRack 商家的之前年付低价套餐全部下架,而且如果到期续费的话账单中的产品价格会涨价不少。所以,如果我们有需要续费产品的话,谨慎选择。1、特价产品下架我们看到他们的所有原来发布的特价方案均已下架。如果我们已有...

Hosteons - 限时洛杉矶/达拉斯/纽约 免费升级至10G带宽 低至年$21

Hosteons,一家海外主机商成立于2018年,在之前还没有介绍和接触这个主机商,今天是有在LEB上看到有官方发送的活动主要是针对LEB的用户提供的洛杉矶、达拉斯和纽约三个机房的方案,最低年付21美元,其特点主要在于可以从1G带宽升级至10G,而且是免费的,是不是很吸引人?本来这次活动是仅仅在LEB留言提交账单ID才可以,这个感觉有点麻烦。不过看到老龚同学有拿到识别优惠码,于是就一并来分享给有需...

vpsdime:夏日促销活动,美国达拉斯VPS,2G内存/2核/20gSSD/1T流量,$20/年

vpsdime怎么样?vpsdime是2013年注册的国外VPS主机商,实际上他还有一系列的其他域名站点如Winity.io, Backupsy,Cloudive, Virtora等等,母公司“Nodisto IT”相对来说还是很靠谱了的商家。VPSDime主要提供各种高配低价VPS套餐,其中Linux VPS和存储VPS基于OpenVZ架构,高级VPS基于KVM。VPSDime在上个季度的Low...

structs为你推荐
word2003公式编辑器word2003如何编辑公式?发送垃圾短信手机接收垃圾短信,怎么办?CA3445广东飞往宁夏飞机票或火车票或汽车票发博客怎样在博客上发文章?发博客怎么发博客?免流量是什么意思腾讯大王卡免费流量是什么意思?百度预测世界杯世界杯预测圣诞节网页制作这是我特别为您制作的2011年圣诞节祝福网页,祝您生蛋(圣诞)快乐,好事圆圆,好梦连连!快去看看吧。1518qq几开头的QQ号好cf服务器爆满为什么穿越火线显示该服务器已爆满怎么才能挤进去?
已备案域名注册 新通用顶级域名 shopex空间 网通服务器ip 免费全能空间 申请个人网站 上海电信测速 英雄联盟台服官网 lamp什么意思 金主 广东服务器托管 删除域名 wannacry勒索病毒 香港打折信息 卡巴斯基免费版下载 卡巴斯基免费下载 ddos防火墙 主机响 xendesktop 更多