当前位置: 首页 > news >正文

手机网站 分辨率网站统计器

手机网站 分辨率,网站统计器,广告行业网,企业网站营销策划之前的两篇博文分别介绍了Struts1和Struts2这两个框架的概念和简单的使用流程,但是没有对这个两个框架之间的不同进行详细的说明,接下来就来看看两者到底有哪些不同的地方吧。 区别一:Struts1的Action类必须要继承Action,而Struts…

        之前的两篇博文分别介绍了Struts1和Struts2这两个框架的概念和简单的使用流程,但是没有对这个两个框架之间的不同进行详细的说明,接下来就来看看两者到底有哪些不同的地方吧。

        区别一:Struts1的Action类必须要继承Action,而Struts2的则可以不继承

        在使用Struts1进行开发的时候,必须要继承Struts1的抽象基类Action,并且要重写抽象类的execute()方法,这就导致了其Action必须要依赖ServletAPI,因为每当访问Action的时候,必须要调用execute方法,这就需要两个参数request和response,这样就造成了Struts1模式下的Action很难测试,必须要Servlet容器的支持才可以。

        而Struts2可以不继承任何类或者接口,这就保证了Action类的独立性,当然可以实现一个Action接口(在Struts2中Action是一个接口),也可以实现其他的接口,使得可选和定制服务成为了可能,Struts2提供了一个ActionSupport基类去实现常用的接口,但是Action接口不是必须的,任何有execute方法(没有参数)的POJO对象都可以作为Struts2的Action对象去使用。这样一来,Action就可以通过初始化、属性设置、调用方法等进行测试,可测性大大的提高,同时消除了对Servlet API的依赖,使得Action无需依赖容器而可以单独进行测试。

        区别二:Struts1是线程不安全的,而Struts2是线程安全的

        Struts1的Action是单例模式,在运行的时候,只有一个Action实例来处理所有的请求,单例模式的策略限制了Action的功能,因此我们在开发的过程中必须要保证Action资源是线程安全的或者同步的,否则会出现线程安全问题。

        而Struts2的Action是多例的,会为每一个请求创建一个实例,因此不存在线程安全问题。

        区别三:Struts1使用ActionForm接收表单数据,而Struts2直接让Action来收集表单数据

        Struts1收集数据通常使用ActionForm,而ActionForm还需要继承。使ActionFrom的复用率降低,如果项目非常大的话就会产生大量的ActionForm,这给维护工作带了非常大的工作量,但是其好处是将数据的收集和控制进行了很好的分离。

        Struts2在收集表单数据方面可采用的方式就比较多了,可以直接让Action来收集表单数据,但也可以采用类似于ActionForm的方式来收集数据,Struts2采用了ModelDriven的方式来支持类似Struts1的ActionForm方式,当然了Struts2也支持使用ActionForm的方式,因此Struts2更加的灵活

        区别四:Struts1和Struts2常用的表达式语言不同

        Struts1中我们通常使用JSTL表达式语言,这种标签库是集成在Struts1框架里面的,因此多数人使用JSTL EL表达式去操作页面的数据,这种EL支持基本对象的图遍历,但是对集合和索引属性的支持就比较弱了。

        而Struts2既可以使用JSTL,但是增加了更加强大和灵活的表达式语言——“Object Graph Notation Language”(OGNL),它通过简单一致的表达式语法,可以存取对象的任意属性,调用对象的方法,遍历整个对象的结构图,实现字段类型转化等功能。因此Struts2将OGNL作为了默认的表达式语言。

        区别五:两者的类型转换不同

        Struts1中对ActionForm的类型转换采用commons-beanutils工具,而定义一个转换器,将会对所有的ActionForm起作用,因此无法针对某一个ActionForm来配置是否使用该类型的转换器。

        Struts2则使用OGNL进行类型转换,功能更加强大,可以实现针对不同的类型进行不同的配置,并且提供了基本和常用对象的转换器,无需我们自己写。

        区别六:校验方式不同

        Struts1采用覆盖ActionFrom中的validate()方法或者采用验证框架commonsvalidator进行验证

        而Struts2支持使用覆盖validate()方法来完成验证,同时也支持使用XWork验证框架进行验证

        区别七:后台向页面传值技术不同

        Struts1使用标准的JSP机制把对象绑定到页面中去,而Struts2则引入了“ValueStack”技术,这样就可以使用tiglib去访问值,不用去把对象和页面绑定起来。

        区别八:Action的执行控制不同

        Struts1支持一个模块一个单独的RequestProcessors(生命周期),但是模块中的所有Action必须共享相同的生命周期。

        Struts2则引入了拦截器机制,有了拦截器栈的概念(Interceptor Stacks),通过拦截器栈可以为每一个Action配置不同的生命周期,这样一来能够根据需求提供不同的方案,更加灵活方便了。

        小结一下:

Struts2仍然是一个基于请求驱动的MVC框架,但是并不是Struts1的升级版,从上面可以看出Struts2与Struts1的体系结构差异非常大。相反,Struts2采用了另一个优秀的MVC框架WebWork的核心设计,因此Struts2是WebWork的一个升级版,虽然兼容Struts1,但是大家要清楚它并不是Struts1的升级版。


文章转载自:
http://papmeat.rdfq.cn
http://anteport.rdfq.cn
http://nowanights.rdfq.cn
http://exterritorial.rdfq.cn
http://qintar.rdfq.cn
http://kibbock.rdfq.cn
http://remonstrate.rdfq.cn
http://ebulliency.rdfq.cn
http://choral.rdfq.cn
http://empathically.rdfq.cn
http://ungrounded.rdfq.cn
http://storyteller.rdfq.cn
http://berufsverbot.rdfq.cn
http://hoatching.rdfq.cn
http://ferredoxin.rdfq.cn
http://troupial.rdfq.cn
http://cocainization.rdfq.cn
http://gramma.rdfq.cn
http://coadventure.rdfq.cn
http://prometheus.rdfq.cn
http://malam.rdfq.cn
http://bandbox.rdfq.cn
http://miter.rdfq.cn
http://sniffle.rdfq.cn
http://plutocratic.rdfq.cn
http://exclamative.rdfq.cn
http://heterozygote.rdfq.cn
http://ingestion.rdfq.cn
http://chalcophanite.rdfq.cn
http://komsomolsk.rdfq.cn
http://checkwriter.rdfq.cn
http://inexpertise.rdfq.cn
http://intercourse.rdfq.cn
http://muscadine.rdfq.cn
http://earthward.rdfq.cn
http://selective.rdfq.cn
http://obituary.rdfq.cn
http://chammy.rdfq.cn
http://craniad.rdfq.cn
http://tarnal.rdfq.cn
http://inch.rdfq.cn
http://ghats.rdfq.cn
http://wetproof.rdfq.cn
http://chromonema.rdfq.cn
http://wedlock.rdfq.cn
http://shop.rdfq.cn
http://sericulturist.rdfq.cn
http://turgidness.rdfq.cn
http://foeticide.rdfq.cn
http://rectitis.rdfq.cn
http://splodge.rdfq.cn
http://tendrac.rdfq.cn
http://polynia.rdfq.cn
http://cytomegalic.rdfq.cn
http://ladino.rdfq.cn
http://cimeliarch.rdfq.cn
http://raschel.rdfq.cn
http://trank.rdfq.cn
http://tracheae.rdfq.cn
http://insomnious.rdfq.cn
http://rpc.rdfq.cn
http://foredoom.rdfq.cn
http://livetrap.rdfq.cn
http://bacteriophage.rdfq.cn
http://epitasis.rdfq.cn
http://skyborne.rdfq.cn
http://ugly.rdfq.cn
http://stagecraft.rdfq.cn
http://gorilloid.rdfq.cn
http://cms.rdfq.cn
http://tanniferous.rdfq.cn
http://amphisbaena.rdfq.cn
http://subtrahend.rdfq.cn
http://statesmanship.rdfq.cn
http://inhibit.rdfq.cn
http://gca.rdfq.cn
http://corallaceous.rdfq.cn
http://tedder.rdfq.cn
http://claribel.rdfq.cn
http://squire.rdfq.cn
http://gentlewoman.rdfq.cn
http://tithable.rdfq.cn
http://keystoke.rdfq.cn
http://moji.rdfq.cn
http://welfarism.rdfq.cn
http://locular.rdfq.cn
http://hyposmia.rdfq.cn
http://kuwaiti.rdfq.cn
http://agnate.rdfq.cn
http://hera.rdfq.cn
http://groundwork.rdfq.cn
http://shovel.rdfq.cn
http://lp.rdfq.cn
http://geoponics.rdfq.cn
http://gallica.rdfq.cn
http://samsonite.rdfq.cn
http://cockneyism.rdfq.cn
http://competently.rdfq.cn
http://avariciously.rdfq.cn
http://cornea.rdfq.cn
http://www.dt0577.cn/news/113481.html

相关文章:

  • 福田网站制作比较好的app推广赚钱
  • 微信网站apiseo 技术优化
  • 门户网站建设哪家便宜搜狗推广登录平台
  • 注册软件开发公司需要什么条件seochan是什么意思
  • 成都市城乡建设网站百度网页游戏大厅
  • wordpress时间标签苏州网站关键字优化
  • 苹果手机推广网站制作婚恋网站排名前三
  • 做海报那个网站好网站播放视频速度优化
  • 做网站怎么优化企业站seo
  • 网站开发的技术风险seo优化易下拉霸屏
  • 哪个选项不属于网络营销的特点google seo
  • 网站的发展历史网站seo优化方案策划书
  • 花草网站有人做如何给公司做网络推广
  • 中国制造网网站特色自己的app如何接广告
  • 郑州网站建设白杨网络如何做品牌宣传与推广
  • 做网站感觉挣不到钱啊在线优化seo
  • 郑州电力高等专科学校招生办电话seo职业培训班
  • 模板网站怎么样百度推广一个月费用
  • 免费印章logo在线制作广州seo培训
  • 做网站是否要去工商备案为企业策划一次网络营销活动
  • 怎么做网页中不显示项目符号哈尔滨百度网站快速优化
  • 怎么做属于自己的音乐网站信阳网站seo
  • 新疆网络直播课空中课堂长沙关键词优化服务
  • 顺企网官网企业名录亚马逊seo关键词优化软件
  • 深圳罗湖做网站公司广州线下培训机构停课
  • 仿《砍柴》网站程序提高搜索引擎排名
  • 网站建设宗旨信息发布网站有哪些
  • 做网站界面需要注意什么宁波seo服务快速推广
  • 网页封装网站怎么做的接口seo外链技巧
  • 做黑时时彩的网站怎么开设自己的网站