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的优点相关推荐

  1. 2011级-csdn-java-张侃—第十一周周报

    河软CSDN乐知学院 学员周学习总结 姓名 张侃 周次 11 方向 Java 内 容 本周学习知识点: EL表达式简介 面向对象的程序设计模式 自定义JSP标签 本周学习收获: EL表达式简介 EL表 ...

  2. 详解蚂蚁金服 SOFAJRaft:生产级高性能 Java 实现

    SOFAStack(Scalable Open Financial Architecture Stack) 是蚂蚁金服自主研发的金融级分布式架构,包含了构建金融级云原生架构所需的各个组件,是在金融场景 ...

  3. 浅谈2011年上半年Java游戏领域动态

    浅谈2011年上半年Java游戏领域动态 时间过得真快,转瞬已是 2011 年 6 月,仿佛都能听到 2012 正率领天启四骑士向我们快速冲锋的马蹄声了.所以趁着世界还没毁灭,我就先来谈谈 2011 ...

  4. 用c语言编程确定一个相图的截面,2011级本科C语言上机复习题.doc

    2011级 <C语言程序设计> 上机复习题 编写一个程序,调用printf函数在一行上输出您的姓名,再调用一次printf函数在两个单独的行上输出您的名和姓.输出应该如下所示(当然里面要换 ...

  5. 2011年度CSDN高校俱乐部“优秀主席”火热出炉

    2011年,CSDN高校俱乐部取得了骄人的成绩:举办全国高校巡讲.移动互联网应用创新大赛.星空大赛等技术活动100余场,覆盖全国高校50余所,辐射学生45000余人.活动效果获得了学校领导.老师和学生 ...

  6. 大学计算机基础郑州大学,郑州大学2011级《大学计算机基础》机试模拟考试安排日程表g.doc...

    各位同仁: 2011级<大学计算机基础>定于第17周(12月19日--23日)上机考试,有关要求如下: 学生所在院系为主监考,信工院为辅监考(负责机器正常运行和试卷抽取). 各院系派监考人 ...

  7. 【Java EE (Struts2 + Spring + Hibernate)开发】:Struts2(二)之【拦截器机制】

    [Java EE (Struts2 + Spring + Hibernate)开发]:Struts2(二)之[拦截器机制] 本文地址:http://blog.csdn.net/shanglianlm/ ...

  8. 14c语言课程设计题目,2011级数据库课程设计任务书

    2011级数据库课程设计任务书 [设计目的] 数据库课程设计是在学生系统地学习了<数据库系统原理>课程后,按照关系型数据库 的基本原理,综合运用所学的知识,设计开发一个小型的数据库管理信息 ...

  9. 个人对北理工2020级硕士研究生张××一篇学术论文涉嫌抄袭的看法

    日前,某网站上发布了关于北京理工大学2020级硕士研究生张××以署名第二作者的身份(共同一作)向arxiv上传了一篇学术论文涉嫌抄袭的消息. 处理结果 9月30日,北京理工大学研究生院网站发布< ...

最新文章

  1. 如何看待「上帝掷骰子」这场概率骗局
  2. C++知识点49——类继承与类的构造、拷贝、operator=和析构函数
  3. Oracle 用shutdown+immediate关机后启动方法
  4. python遍历文件夹下所有文件名中含有指定_Python 遍历目录找出包含指定字符串的文件夹...
  5. #39;boost/iterator/iterator_adaptor.hpp#39; file not found之xcode生成时报错的解决方案
  6. Flask自定义错误页面的方法
  7. Chrome 插件开发与本地程序交互流程
  8. json和python中字典的区别和联系_python中字典和json的区别
  9. workbench设置单元坐标系_ANSYS经典案例在Workbench中实现分享连载(三)
  10. LINQ Enumerable 续
  11. Vuex的State核心概念
  12. 博文视点Open Party第5期:操作系统与嵌入式开发 圆满结束
  13. NYOJ 214(LIS,二分插入)
  14. 知网查重报告html乱码,知网查重报告出现乱码怎么办
  15. 线性方程组解的数目判定
  16. 树莓派获取root权限
  17. Linux下面无线网络配置
  18. vim/gvim 主题配色方案下载 安装修改配置
  19. 条件表达式a?b:c是什么意思
  20. 信息安全结业复习题(选择 + 填空 + 简答 + 计算 + 设计 )含历年考题

热门文章

  1. 表白套路计算机公式,化学公式的超酷表白 九个学科专属表白句子
  2. 【Linux基础】Windows10安装Ubuntu20.04双系统
  3. HackRF-One 的接收和发送实验
  4. 【H5】网页中的图片
  5. 如何利用Smartbi进行bi报表开发?
  6. 混合整数规划(Mixed Integer Programming)
  7. 图扑数字孪生卡车装配生产线,工业元宇宙还远么?
  8. 如何正确的使用Photoshop进行图像的二值化(详细步骤)刘博士
  9. 数据库实验报告 设计便利店数据表、商品数据表 查询需要上货的商品列表 SQL Kingbase
  10. 对计算机硬件的认识的论文,正确认识计算机硬件的安全维护措施有哪些