2011级-csdn-java-张侃— struts2的优点
Apache Struts在2000年5月由 Craig McClanahan 发起,并于2001年7月发布了1.0版本。从技术的角度上讲,它是在开发Web
程序上的一次跨越性的进步,但更重要的是,它是在最恰当的时候出现在了人们的眼前。Struts 一出现便大受欢迎,更成为了以后几
年内web开发的实际标准。
Struts2是Struts的下一代产品。最初提案Struts Ti所设想的发展方向,在Struts的现有代码的基础上是很难完成的。在发起提案
的时候,Patrick Lightbody 把多个不同的Web框架的领导者邀请到了一起,希望大家能够协力完成一个通用的框架。但因种种原
因,只有WebWork和Struts走到了一起。Struts2吸取了Struts1.x和WebWork的各种优点,更改了一些不足的地方,比如移走了原来
WebWork中的IOC实现,引入Spring的IOC实现等。Struts2的目标就是----使Web开发更加容易。
今天摆在web开发人员面前的是众多的web开发框架,有些来自开源社区,有些来自商业公司,以满足各种web开发需要,到目
前为止,有最少超过40种的web开发框架,那我们为什么要选择Struts2呢?下面列出一些Struts2的特性。
基于pojo易于测试
在Struts1.x中我需要Mock出这两个Http对象,使我们很难编写Action的单元测试,与Struts1.x相比,Struts2的Action 不再依赖
于HttpServletRequest和HttpServletResponse对象,使我们能够更方便的针对Action编写单元测试。Struts2的单元测试看起来就像这
样:
<SPAN style="COLOR: #000000">public void testEnrol(){
userinfoAction.setUsername("wangwu");
userinfoAction.setUserPassword("123456");
userinfoAction.setMail("");
String result = userinfoAction.enrol();
assertEquals("success",result);
}
</SPAN>
与Spring的集成
与Struts1.x相比,Struts2不必再自己编写singleton,进一步的降低了程序间的耦合性,就Struts2内部本身而言,降低了框架本身的偶合性。
更加的模块化
与Struts1.X 相比,Struts2更加的模块化,可以轻松将配置信息按功能界限拆分成多个文件,便于管理和团队协作开发。
基于插件的框架
Struts2是一个基于插件的框架,社区中提供了很多实用的插件,比如jfreechat/json等等,使用这些插件可以简化我们的开发,加快开发进度。
大量的拦截器
Struts2本身提供了大量的可重用的拦截器,比如类型转换拦截器,很多时候我们从页面取得参数,这个时候它是String类型
的,我们需要手动的把它转成Long型的或是Integer型的再使用,在Struts2中你不必这样做,Struts2中已经帮你做了这些事情了。当
然我们也可以实现自定义的拦截器,比如:权限检查拦截器来做访问控制。
惯例大于配置
惯例大于配置是Struts2的架构目标,比如我们需要对页面输入的数据进行验证,只需取一个跟Action同名的xxAction-
validation.xml文件,Struts2就会自动的进行验证。还有很多,比如国际化资源文件等。
多种视图的支持
多种视图的支持:jsp,freemarker,Veloctiy,只要你愿意,你甚至可以通过轻松的改造让它支持pdf,同一个项目中你可以支持多种视图。
申明式的异常处理
Struts2提供了方便的申明式异常处理,它看起来像这样:
<SPAN style="COLOR: #000000"><global-results>
<result name="licenceException">/WEB-INF/pages/client/licenceException.jsp</result>
<result name="payException">/WEB-INF/pages/client/unPay.jsp</result>
<result name="accessDeny">/WEB-INF/pages/client/accessDeny.jsp</result>
</global-results>
<global-exception-mappings>
<exception-mapping exception="com.yeebobo.yeebox.web.licence.LicenceException" result="licenceException"/>
<exception-mapping exception="com.yeebobo.yeebox.web.licence.PayException" result="payException"/>
</global-exception-mappings>
<SPAN style="FONT-SIZE: 14px"> </SPAN></SPAN>
如果你以前是WebWork的用户,那么你会觉得Struts2和WebWork实在是太像了,当然如果你以前是Struts1.x的忠实用户,也能够快速的过渡到Struts2的开发中来,如果你重来没有用过任何框架,你也可以通过快速的学习,加入到Struts2的应用开发中来,因为它足够的简单。
2011级-csdn-java-张侃— struts2的优点相关推荐
- 2011级-csdn-java-张侃—第十一周周报
河软CSDN乐知学院 学员周学习总结 姓名 张侃 周次 11 方向 Java 内 容 本周学习知识点: EL表达式简介 面向对象的程序设计模式 自定义JSP标签 本周学习收获: EL表达式简介 EL表 ...
- 详解蚂蚁金服 SOFAJRaft:生产级高性能 Java 实现
SOFAStack(Scalable Open Financial Architecture Stack) 是蚂蚁金服自主研发的金融级分布式架构,包含了构建金融级云原生架构所需的各个组件,是在金融场景 ...
- 浅谈2011年上半年Java游戏领域动态
浅谈2011年上半年Java游戏领域动态 时间过得真快,转瞬已是 2011 年 6 月,仿佛都能听到 2012 正率领天启四骑士向我们快速冲锋的马蹄声了.所以趁着世界还没毁灭,我就先来谈谈 2011 ...
- 用c语言编程确定一个相图的截面,2011级本科C语言上机复习题.doc
2011级 <C语言程序设计> 上机复习题 编写一个程序,调用printf函数在一行上输出您的姓名,再调用一次printf函数在两个单独的行上输出您的名和姓.输出应该如下所示(当然里面要换 ...
- 2011年度CSDN高校俱乐部“优秀主席”火热出炉
2011年,CSDN高校俱乐部取得了骄人的成绩:举办全国高校巡讲.移动互联网应用创新大赛.星空大赛等技术活动100余场,覆盖全国高校50余所,辐射学生45000余人.活动效果获得了学校领导.老师和学生 ...
- 大学计算机基础郑州大学,郑州大学2011级《大学计算机基础》机试模拟考试安排日程表g.doc...
各位同仁: 2011级<大学计算机基础>定于第17周(12月19日--23日)上机考试,有关要求如下: 学生所在院系为主监考,信工院为辅监考(负责机器正常运行和试卷抽取). 各院系派监考人 ...
- 【Java EE (Struts2 + Spring + Hibernate)开发】:Struts2(二)之【拦截器机制】
[Java EE (Struts2 + Spring + Hibernate)开发]:Struts2(二)之[拦截器机制] 本文地址:http://blog.csdn.net/shanglianlm/ ...
- 14c语言课程设计题目,2011级数据库课程设计任务书
2011级数据库课程设计任务书 [设计目的] 数据库课程设计是在学生系统地学习了<数据库系统原理>课程后,按照关系型数据库 的基本原理,综合运用所学的知识,设计开发一个小型的数据库管理信息 ...
- 个人对北理工2020级硕士研究生张××一篇学术论文涉嫌抄袭的看法
日前,某网站上发布了关于北京理工大学2020级硕士研究生张××以署名第二作者的身份(共同一作)向arxiv上传了一篇学术论文涉嫌抄袭的消息. 处理结果 9月30日,北京理工大学研究生院网站发布< ...
最新文章
- 如何看待「上帝掷骰子」这场概率骗局
- C++知识点49——类继承与类的构造、拷贝、operator=和析构函数
- Oracle 用shutdown+immediate关机后启动方法
- python遍历文件夹下所有文件名中含有指定_Python 遍历目录找出包含指定字符串的文件夹...
- #39;boost/iterator/iterator_adaptor.hpp#39; file not found之xcode生成时报错的解决方案
- Flask自定义错误页面的方法
- Chrome 插件开发与本地程序交互流程
- json和python中字典的区别和联系_python中字典和json的区别
- workbench设置单元坐标系_ANSYS经典案例在Workbench中实现分享连载(三)
- LINQ Enumerable 续
- Vuex的State核心概念
- 博文视点Open Party第5期:操作系统与嵌入式开发 圆满结束
- NYOJ 214(LIS,二分插入)
- 知网查重报告html乱码,知网查重报告出现乱码怎么办
- 线性方程组解的数目判定
- 树莓派获取root权限
- Linux下面无线网络配置
- vim/gvim 主题配色方案下载 安装修改配置
- 条件表达式a?b:c是什么意思
- 信息安全结业复习题(选择 + 填空 + 简答 + 计算 + 设计 )含历年考题
热门文章
- 表白套路计算机公式,化学公式的超酷表白 九个学科专属表白句子
- 【Linux基础】Windows10安装Ubuntu20.04双系统
- HackRF-One 的接收和发送实验
- 【H5】网页中的图片
- 如何利用Smartbi进行bi报表开发?
- 混合整数规划(Mixed Integer Programming)
- 图扑数字孪生卡车装配生产线,工业元宇宙还远么?
- 如何正确的使用Photoshop进行图像的二值化(详细步骤)刘博士
- 数据库实验报告 设计便利店数据表、商品数据表 查询需要上货的商品列表 SQL Kingbase
- 对计算机硬件的认识的论文,正确认识计算机硬件的安全维护措施有哪些