`
kidiaoer
  • 浏览: 808721 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
文章分类
社区版块
存档分类
最新评论

struts

阅读更多
struts1与struts2本质区别
1 在Action实现类方面的对比:Struts 1要求Action类继承一个抽象基类;Struts 1的
一个具体问题是使用抽象类编程而不是接口。Struts 2 Action类可以实现一个Action接
口,也可以实现其他接口,使可选和定制的服务成为可能。Struts 2提供一个ActionSupport基
类去实现常用的接口。即使Action接口不是必须实现的,只有一个包含execute方法的POJO类都
可以用作Struts 2的Action。

2 线程模式方面的对比:Struts 1 Action是单例模式并且必须是线程安全的,因为仅有Action的
一个实例来处理所有的请求。单例策略限制了Struts 1 Action能做的事,并且要在开发时特别小
心。Action资源必须是线程安全的或同步的;Struts 2 Action对象为每一个请求产生一个实例,因
此没有线程安全问题。

3 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,从而
给开发者更多灵活的选择。

4 可测性方面的对比:测试Struts 1 Action的一个主要问题是execute方法依赖于Servlet API,这
使得Action的测试要依赖于Web容器。为了脱离Web容器测试Struts 1的Action,必须借助于第三方
扩展:Struts TestCase,该扩展下包含了系列的Mock对
象(模拟了HttpServetRequest和HttpServletResponse对象),从而可以脱离Web容器
测试Struts 1的Action类。Struts 2 Action可以通过初始化、设置属性、调用方法来测试。

5 封装请求参数的对比: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,从而降低了代码污染。

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

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

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

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

10 Action执行控制的对比:Struts 1支持每一个模块对应一个请求处理(即生命周期的
概念),但是模块中的所有Action必须共享相同的生命周期。Struts 2支持通过拦截器
堆栈(Interceptor Stacks)为每一个Action创建不同的生命周期。开发者可以根据需
要创建相应堆栈,从而和不同的Action一起使用。

分享到:
评论

相关推荐

    struts1和struts2的区别

    struts1和struts2的区别struts1和struts2的区别struts1和struts2的区别struts1和struts2的区别struts1和struts2的区别struts1和struts2的区别struts1和struts2的区别struts1和struts2的区别struts1和struts2的区别...

    Struts2视频教程

    Struts2是一套非常优秀的Java WEB应用框架,实现优雅、功能强大、使用简洁。目前已有大量的企业项目采用Struts2来作为Web框架进行开发,掌握Struts2是每个进行Web开发的Java程序员的一项必备技能。 本视频对Struts2...

    最新版本的Struts2+Spring4+Hibernate4框架整合

    项目原型:Struts2.3.16 + Spring4.1.1 + Hibernate4.3.6 二、 项目目的: 整合使用最新版本的三大框架(即Struts2、Spring4和Hibernate4),搭建项目架构原型。 项目架构原型:Struts2.3.16 + Spring4.1.1 + ...

    struts2-core.jar

    struts2-core-2.0.1.jar, struts2-core-2.0.11.1.jar, struts2-core-2.0.11.2.jar, struts2-core-2.0.11.jar, struts2-core-2.0.12.jar, struts2-core-2.0.14.jar, struts2-core-2.0.5.jar, struts2-core-2.0.6.jar,...

    搭建struts2框架

    struts2框架的详细搭建 <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" ...

    Struts2开发常用jar包

    包含struts2-core-2.5.10.1.jar,struts2-jfreechart-plugin-2.5.10.1.jar,struts2-json-plugin-2.5.10.1.jar,struts2-junit-plugin-2.5.10.1.jar,struts2-bean-validation-plugin-2.5.10.1.jar,struts2-cdi-...

    struts框架jar包

    logging-1.0.4.jar commons-validator-1.3.1.jar jstl-1.0.2.jar oro-2.0.8.jar standard-1.0.2.jar struts-core-1.3.8.jar struts-el-1.3.8.jar struts-extras-1.3.8.jar struts-faces-...

    struts2实例 学生信息管理系统

    struts2实现的学生信息管理系统 <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" ...

    Struts2_s2-016&017&ognl2.6.11_patch漏洞补丁

    struts.xml文件中新增以下内容: <!-- 为修复struts2 s2-016、s2-017漏洞,重写DefaultActionMapper --> <bean type="org.apache.struts2.dispatcher.mapper.ActionMapper" name="myDefaultActionMapper" class=...

    Struts2漏洞检查工具2019版 V2.3.exe

    Struts2漏洞检查工具2019版 警告: 本工具为漏洞自查工具,请勿非法攻击他人网站! ==漏洞编号==============影响版本=========================官方公告==========================================影响范围====...

    Struts2最新漏洞升级2.3.32版本

    1、升级所需要的jar(见附件): freemarker-2.3.22.jar ognl-3.0.19.jar struts2-convention-plugin-2.3.32.jar struts2-core-2.3.32.jar struts2-spring-plugin-2.3.32.jar ...<struts>“加在这里”</struts>

    struts1.0和struts2

    struts1和struts2的区别其实并不是太大,两者的区别: Action 类: ◆Struts1要求Action类继承一个抽象基类。Struts1的一个普遍问题是使用抽象类编程而不是接口。 ◆Struts 2 Action类可以实现一个Action接口,也...

    struts-config.xml struts标准配置文件 struts-config

    struts-config.xml struts标准配置文件 struts-config

    Struts简介 什么是Struts Struts基本运作流程

    Struts简介 什么是Struts Struts基本运作流程 ActionMapping类 Action类 ActionForm类 ActionError与ActionMessage 协同开发 模块化程序 Struts异常处理 Struts国际化支持 PlugIn接口 等等

    struts2 总结工程大全

    struts2 总结工程大全struts2 总结工程大全struts2 总结工程大全struts2 总结工程大全struts2 总结工程大全struts2 总结工程大全struts2 总结工程大全struts2 总结工程大全struts2 总结工程大全struts2 总结工程大全...

    struts2环境搭建+struts2 新闻发布系统+struts2 留言板

    struts2环境搭建+struts2 新闻发布系统+struts2 留言板 struts2环境搭建:基础框架搭建,简单易上手,适合新手,比你看书强多了,实践源于理论而高于理论,贵在实践 朋友。 struts2 新闻发布系统:struts2+jsp 功能不...

    在Eclipse中配置Struts2项目(html)手把手教会你 +struts2 标签库介绍(html) + STRUTS2学习文档.pdf + Struts2―表单验证validate(html) + struts2和struts的比较 + struts教程(html)

    在Eclipse中配置Struts2项目(html)手把手教会你 如何在Eclipse中配置Struts2。 struts2 标签库介绍(html)对Struts2的...struts2和struts的比较 让你更清楚的知道struts2和struts的不同之处。 struts教程(html)

    论坛系统项目(Struts 2+Hibernate+Spring实现)

    论坛系统项目(Struts 2+Hibernate+Spring实现)论坛系统项目(Struts 2+Hibernate+Spring实现)论坛系统项目(Struts 2+Hibernate+Spring实现)论坛系统项目(Struts 2+Hibernate+Spring实现)论坛系统项目(Struts...

    struts1 和 struts2所需jar包

    struts1 和 struts2所需jar包。主要包含以下内容: struts-1.3.10-all.zip struts-1.3.10-apps.zip struts-1.3.10-lib.zip struts-1.3.10-src.zip struts-2.3.4.1-all.zip struts.rar

    Struts2实战.pdf

    《Struts 2实战》结合实例介绍了Struts 2框架,主要内容包括Action、Result、Interceptor等框架组件,基于注解的配置选项等新特征,Struts 2插件 FreeMarker,如何从Struts 1和WebWork 2迁移到Struts 2,Ajax标签、...

Global site tag (gtag.js) - Google Analytics