Struts2概述及与Struts1的对比

Struts2 概述

1,仍然是一个基于请求响应的MVC框架

2,Struts2不是Struts1的升级

3,Struts2与Struts1的体系结构差距非常大

4,Struts2采用了另一个MVC框架WebWork的核心设计

5,Struts2更优秀:松耦合设计。。

 

Struts1与Struts2的对比

1,Action方面

Struts1的Action必须继承;Struts1是单例的,存在线程安全问题;控制执行方面,Struts1固定不变的

Struts2的Action可以不继承;Struts2是多例的,没有线程安全问题;控制执行方面,Struts2通过拦截器,可以改变执行流程,灵活配置的

2,Servlet API依赖与可测试性

Struts1的Action测试性不好,Struts1中的Action需要依赖Servlet API,因为需要容器支持,因为在Action依赖Servlet API

Struts2的Action测试性不好,Struts2中的Actionk可以不用依赖ServletAPI,可以直接写一个单元测试完成,因为Struts2的Aciton是一个POJO对象

3,ActionForm方面

Struts1收集数据通常使用ActionForm,而ActionForm还需要继承,使得ActionForm的复用率降低。另外项目非常大会建立很多ActionForm给维护带来工作量,但也有好处,数据的收集和控制进行很好的分离。

Struts2可以不用使用ActionForm来收集数据,直接让Action来收集 数据,但也可以采用类似ActionForm的方式来收集数据,Struts2采用ModelDriven的方式来支持类似Struts1的ActionForm方式,所以Struts2更灵活。

4,类型转换与表达式语言方面

Struts1对ActionForm的类型转换采用 commons-beanutils工具,而定义完成一个转换器,将对所有的ActionForm起作用,而不能针对某一个ActionForm来配置是否使用此类型的转换器。Struts1中我们通常使用JSTL作为显示层绑定数据的方式。

Struts2使用OGNL进行类型转换,功能更加强大,转换过程可以针对某个类型进行配置。;Struts2中我们可以使用功能更强大的表达式语言OGNL(Object Graph Notation Language)

5,校验

Struts1采用覆盖ActionForm中的validate()方法或采用验证框架commons validator来验证

Struts2支持使用覆盖validate()方法来完成验证,也支持验证框架XWork来验证。

 

 

 

 

 

时间: 2024-12-10 23:08:48

Struts2概述及与Struts1的对比的相关文章

struts2基本配置

 Struts2虽然在大版本号上是第二个版本,但基本上在配置和使用上已经完全颠覆了Struts1.x的方式(当然,Struts2仍然是基于MVC模式的,也是动作驱动的,可能这是唯一没变的东西).Struts2实际上是在Webwork基础上构建起来的MVC框架.我们从Struts2的源代码中可以看到,有很多都是直接使用的xwork(Webwork的核心技术)的包. 1.web.xml的作用 web.xml核心代码: <filter> <filter-name>struts2</

Unmi的Struts2学习笔记(八)

吾同人数进寺庙,却从未点过一柱香.概因精神世界里终无所寄托.既不为生 儿还是女而筹算,也无须因落下亏心事要请得神灵庇佑.想来,真要的东西,阿 弥陀佛也给不了.在物价飞涨之际,谁能给你加薪,何来民主,看看这辈子能不 能有机会参与选一回国家领导人,少说几句了,就这点言论自由了. 1. Struts 2 标签库以 OGNL 表达式为基础,对集合.对象的访问功能更强了 .Struts 2 的标签用统一的前缀,一般为 "s",不再像 Struts1 那样分 <html:.../>.&

Unmi的Struts2学习笔记(四)

在这个陌生的城市里,的确承受着巨大的压力.房东的驱赶与无理的加价,想 置个家电须顾及到搬迁.也开始学会了算计着过活,两块五与三块的公交,宁愿 等待与拥挤,就连省下一顿饭钱都能暗自庆幸.周末了,老老实实呆在家里吧! 1. 按这个顺序加载 Struts2 的常量,struts-default.xml.struts- plugin.xml.struts.xml.web.xml:后加载的会覆盖前面的同名常量.强烈不推 荐在 web.xml 中配置 Struts2 常量. 2. Struts1 中有一种

Struts1.x教程专题

Struts1.x系列教程(24):配置文件总结 Struts1.x系列教程(23):使用Tiles模板进行布局 Struts1.x系列教程(22):Tiles框架简介 Struts1.x系列教程(21):使用MappingDispatchAction类调用不同 Struts1.x系列教程(20):使用EventDispatchAction类处理一个fo Struts1.x系列教程(19):LookupDispatchAction类处理一个form Struts1.x系列教程(18):使用Dis

Struts2开发环境搭建 附简单登录功能实例_java

首先是搭建Struts2环境. 第一步 下载Struts2 去Struts官网 http://struts.apache.org/ 下载Struts2组件. 截至目前,struts2最新版本为2.3.1.3,下载struts-2.3.16.3-all.zip,解压,放着. 第二步 新建Web Project并导入jar包 在MyEclispe中新建Web Project,然后找到解压的Struts2包,在里面apps文件夹下找到struts2-blank.war,解压这个WAR文件,将里面WEB

struts2 国际化

问题描述 配置中文及英文版国际化资源文件,globalMessages.propertiesglobalMessages_zh_CN.propertiesglobalMessages_en_US.properties在中文及英文访问下正常.但我切换到这两语种以外(如:德语)的语种.页面显示的不是globalMessages.properties中的国际化,globalMessages.properties默认的是英文的.请问:struts2国际化不像struts1.x一样,在没找到对应的语文资料

关于一个struts2国际化的处理问题。

问题描述 现在有一个需求是这样的, 在数据库里面有一个menu菜单表, 需要支持多种语言. 然后把菜单的名称配置到国际化资源文件中,数据库中只配置国际化文件的key.比如有如下几个字段:menuId menuName prentId URL status100 menu.user.Manager -1 XXXX.jsp Y101 menu.modify.user -100 XXXX.jsp Y102 menu.query.user -100 XXXX.jsp Y这个菜单表,中的menuName的

struts1死翘翘了么

问题描述 学习struts有一段时间了,最近看到很多的关于struts2或者webwork的文章,难道struts1已经过时了吗?是什么症结呢?谢谢关注... 解决方案 这个问题又与C与java学哪个好犯同样的病struts1弄懂了 struts2还需要学吗,道理都是一样的解决方案二:引用还有就是Struts2是要用JDK5.0的struts2有jdk1.4版本的解决方案三:框架而几,现学现用!解决方案四:struts1没有过时,现在很多旧的系统.老的框架都用它,主要看公司的人,如果公司的人都熟

刚准备学struts,但是是学struts2还是structs1.x,求解释?

问题描述 到底哪一种是现今软件的主流框架,struts1.x?struts2? 解决方案 解决方案二:直接上struts2吧解决方案三:当然最好是都会啦,先学struts1再学struts2!反正学了一个的话另外一个也容易啦!!解决方案四:就是,最好都会,你如果进公司接手的是遗留项目的话都是用struts1做的,新项目都是用struts2做了.最好都会了解决方案五:两个都学.解决方案六:有servletjsp基础的话建议先看看struts1基本上看上一半天就会了完了整2也不是啥麻烦事就是一堆配置