struts 初体验

1. 什么是Struts2
struts2凡是坐WebWork的统筹思想为骨干,吸收了Struts1的部分小,建立了配合WebWork和Struts1底MVC框架。

史故事

在越南战争期间(1955年—1975年),对于美国战机飞行员而言,要履100浅飞行任务,飞至敌国领空被击落的几率是50%。

1967年,萨瑟兰还是一个并未更的后生飞行员,当时倒是举行顶凶险的均等码工作:侦查。他的战机但装备了相机与备用燃料箱,飞至越南空中被领航员拍摄轰炸任务前后的相片。萨瑟兰以实施任务之常常,肾及腺素就会见飙升,但他平生都能冷静应对,面对这样惊险程度总是大淡定。他将即时同一素质归功给在空军服役期间拟到之高风险管控能力。在训练中学会了观察、导向、决定以及履四起事。具体地提,先考察对象区域,然后确认进入及剥离目标区域之超级途径,在未知事件面前这地做出调整,最后以本能的驱动下以果断的行走。迟疑不决会要了一个飞行员的指令,但贸然行事也会要了一个飞行员的授命。一旦领航员拍好照,我就会见为此力拉操纵杆,提升飞行高度,远离危险区域。

越南战争结束晚,萨瑟兰回到了美国,到斯坦福大学学习统计学硕士学位。毕业后,萨瑟兰到了美国空军学院教书数学、统计学和概率论。后来,又到科罗拉多大学医学院学习生物统计学博士学位。用几年时光时查找来促使一个正常细胞有癌变的要素。萨瑟兰学到了很多关于系统论的学问,理解了为何一个细胞开始演变时,会打一个安乐状态过渡至其他一个安居乐业状态。他花费了靠近10年之辰研究什么推进一个错综复杂的由适应系统于一个态过渡至其它一个态,以及如何保证下一个状态是主动的,而休消极的。

几年后,萨瑟兰发现集体、团队和人口且足以叫视为复杂的打适应系统,使细胞从一个状态过渡至其他一个状态的因素,同样好给人自一个状态过渡至任何一个态。要转细胞,首先需要将能注入系统遭到,起初可能会见面世紊乱局面,看起杂乱无章,一切还远在运动中。当您待改变一个团队时,可能啊会来这样的事务,这个团队的分子变得急不安,因为她俩没辙清楚有了什么,也非晓自己应当什么回答。然而,如同细胞一样,组织会以快速的速进入稳定之初状态。唯一的题目在于,新状态是不是优于于原始状态,细胞是成为癌细胞或如常细胞。当时本身眷恋明白我们是否能够寻找来片简便的平整,以此指导团变得再速、更快乐、更拥有相互帮忙精神、更起童趣和进一步让人向往。

以里根本政府中,科学研究经费中大幅削减,中洲计算机服务公司找到了萨瑟兰。因为该企业听说他是技术领域内的主流专家,一个熟识系统论的口。该商厦最新、最紧俏之成品是所谓的“自动柜员机网络”(ATMnetwork/ATM取款机)。要了解,那是于1983年之时光。

当萨瑟兰进入中洲计算机服务公司后,发现该商厦的微机编程部门采取的是“瀑布法”。该单位所有数百名为计算机程序员,每天忙忙碌碌,但无法在指定的年华本预算提交成果。该商厦之本金比收入多来了30%。高层领导时常爆发出吼叫,要求他们增强细化管理,提出尖锐之求,命令他们尤为努力地工作,命令他们加班当。但任高管如何施加压力,项目仍然延期超支。

以现在团队运行方式问题重重,已经黔驴技穷透过小修小补的道来改了。萨瑟兰决定于店堂里任何从炉灶组建新部门.萨瑟兰找到程序员们及经理等,告诉她们:“我们首先要停止做那些将咱折腾死的工作。我们必须寻找来还好之办事措施,而且要就付诸实践。”

外拿此新机构分成几单团体来管理,奖金的关不是圈个人功绩,而是看整个单位的功业。当时动的一些工具在10年过后慢慢演化成了Scrum的因素,其中包括产品负责人(product
owner)、Scrum主管(Scrummaster)、产品要办事项清单(product
backlog)以及每周冲刺(weekly
sprint)。6只月后,这个团成为了整套企业极盈利的机关,营业收入越支出的30%。开发的Nonstop
Tandem系统是极早得银行信赖并吃利用的在线交易系统,应用到了百分之百北美地区。

又后来,2001年2月11日届13日,17员软件开发领域的领军人物聚集在美国都他州的滑雪胜地雪鸟(Snowbird)雪场。经过少上的议论,“敏捷”(Agile)这个词也所有聚会者所接受,用以概括一学新的软件开发价值观。诞生了无限知名的“敏捷软件开发宣言”。

1.1 WebWork: 强调系统中的松耦合,使用拦截器来落实控制。
不因让web容器,
从而解决了框架对ServletAPI的紧耦合,使得测试更加便于。同时,在展现层支持更多之视图技术,开发再灵活。

飞革命

如上内容出自杰夫•萨瑟兰底《敏捷革命》
这本书。

葡京在线开户 1

2. struts的利弊
【优点】
2.1. 兑现MVC模式,结构清晰,使开发者只关注业务逻辑的实现.
2.2. 闹添加的tag可以用
,Struts的标记库(Taglib),如能灵活采用,则会大大提高开发效率。另外,就即境内的JSP开发者而言,除了行使JSP自带的常用标记外,很少出协调的标记,或许Struts是一个不行好的起点。
2.3.
页面导航.页面导航将是后来底一个进步趋势,事实上,这样做,使系统的系统更加清楚。通过一个部署文件,即可把握总体体系各级组成部分中的联络,这对后期的保护有莫大的便宜。尤其是当其他一样批开发者接手者项目时,这种优势体现得更加明显。
2.4. 资Exception处理体制 .
2.5. 数目库链接池管理
2.6. 支持I18N
【缺点】
2.1
转至亮层时,需要安排forward,每一样不善反到展示层,相信大部分且是直改动到jsp,而涉嫌到转会,需要配备forward,如果发生十单亮层的jsp,需要配备十坏struts,而且还免包有时候目录、文件变更,需要再修改forward,注意,每次修改配置之后,要求重新部署整个项目,而tomcate这样的服务器,还须再次启航服务器,如果工作转移复杂频繁之网,这样的操作简单不可想像。现在就是是这么,几十多独人口同时在线使用我们的网,大家可以想象一下,烦恼来差不多百般。
2.2 Struts
的Action必需是thread-safe方式,它仅允许一个实例去处理所有的请。所以action用到的装有的资源还必不可少统一联合,这个就是引了线程安全之问题。
2.3 测试不方便.
Struts的每个Action都跟Web层耦合在一起,这样她的测试依赖让Web容器,单元测试也杀不便实现。不过起一个Junit的扩充工具Struts
TestCase可以实现它的单元测试。
2.4 类型的转换.
Struts的FormBean把拥有的数还看成String类型,它可采用工具Commons-Beanutils进行路转化。但它的转折还是于Class级别,而且转化的花色是不行配置的。类型转化时之错误信息返回给用户为是蛮艰苦的。
2.5 对Servlet的依赖性过强. Struts处理Action时肯定待依赖ServletRequest
和ServletResponse,所有它摆脱无了Servlet容器。
2.6
前端表达式语言方面.Struts集成了JSTL,所以它要行使JSTL的表达式语言来获取数据。可是JSTL的表达式语言在Collection和索引属性方面处理显得非常死。

有关作者

杰夫•萨瑟兰(Jeff
Sutherland),Scrum发明者与一起创造人,被喻为“Scrum之大”,《敏捷宣言》起草人之一。

萨瑟兰毕业被西点军校,曾当美国空军战斗机飞行员,完成过100坏飞越北部越南的征战任务。1972年,萨瑟兰获得斯坦福大学统计学硕士学位。1980年,他得到科罗拉多大学之海洋生物统计学博士学位。1983年,萨瑟兰进入中洲计算机服务公司,该公司也150贱银行提供技术劳务,他负责研发ATM网络技术。萨瑟兰还先后做了11小软件商店的上位执行官以及首席技术官,积累了长的色管理更。2006年,他建立了和谐的营业所Scrum,Inc.,提供Scrum管理艺术的栽培劳动。

3. Struts2 的获取
http://struts.apache.org

4. Struts2 的应用

  • 4.1 确认环境

1) 在列蒙引入Struts2 jar包
struts2-core xwork-core ognl fremarker javassist commons-fileupload
commons-io Commons-lang
2) 修改工程的web.xml文件,配置过滤器

  • 4.2 代码编写

1)
编写开发处理要的Action类,并实现具体的处理要的艺术,该法要回到一个字符串类型的结果【action类,
extends ActionSupport】
2) 编写struts.xml文件,对Action进行安排【位于src的彻底目录下】
3) 编写与Action相关的JSP页面

5. Struts2访问servletAPI对象

  • 5.1
    使用ActionContext类获取ServletAPI对象对应的MAP对

【使用Map对象替代ServletAPI中之HttpServletRequest, HttpSession和
ServletContext】

1) 获得request参数 【get()】
ActionContext ac = ActionContext.getContext();
Map request = (Map)ac.get(“request”);

2) 获取对象的HttpSession对象的Map对象【getSession()】
Map session = ActionContext.getContext().getSession();

3) 获取相应的ServletContext对象的Map对象 【getApplication()】
Map app = ActionContext.getContext().getApplication();

以身作则: Action页面保存用户称: session.put(“name”,”values”);
         JSP页面获取用户称: ${sessionScope.name}

  • 5.2 struts2 向Action
    注入ServletAPI对象对应之Map对象

 

  • 5.3 与Servlet
    API耦合的访方式

 

6. Struts 2 标签

标签分为两像样: UI标签葡京在线开户(UI Tag) 和通用标签 (Generic Tag)
<%@taglib uri=”/struts-tags” prefix=”s” %>

6.1 UI标签: 表单标签、非表单标签、Ajax标签
<s:form></s:form> <s:textfield></s:textfield>
……

6.2 通用标签: 条件标签 <s:if> <s:elseif> <s:else>
迭代签: <s:iterator>