Struts2权威指南总结1:概述
来源:互联网 发布:域名服务器的作用 编辑:程序博客网 时间:2024/06/13 23:44
1,Struts2整合了两个优秀的框架,传统的struts和webwork,这保证了struts2作为实际开发框架的成熟性,Struts2保留了Struts1的简单易用性,并且充分利用了webwork的拦截器机制(其实就是AOP思想),将Struts2发展成一个具有高度可扩展性的框架。
Struts2出现以后,完全取代了Struts和webwork框架,Struts2框架团队由Struts2团队和WebWork团队组成。
2,早期的web应用都是由静态html页面组成的,后来出现了CGI,CGI可以完成将用户的请求数据保存到服务器的数据库,并可以将服务器的数据响应给浏览器,可以完成浏览器与服务器的交互,不再需要HTML页面。CGI技术开启了动态WEB应用的时代,给了这种技术无限的可能性。但是CGI技术存在很多的缺点,最大的的一个缺点就是开发动态WEB应用的难度非常大,而且性能也存在限制。到1997年时,随着Java的崛起,Servlet技术成为动态WEB应用的主要开发技术,相对CGI,Servlet的优势有:
1998年,微软发布了ASP2.0,他是WindowNT 4 Option Pack的一部分作为IIS4.0的外接式附件。他与ASP1.0的主要区别是他的外部组件是可以初始化的,ASP开始正式作为WEB编程技术。ASP使用VBScript作为脚本语言,语法简单,开发效率非常高,而且VB的程序员很多,所以ASP马上成为使用最广泛的动态WEB开发技术。
随后SUN公司发布了JSP标准,从某种程度上来说,他是对抗ASP的一种动态WEB编程技术。ASP和JSP存在一些区别,首先ASP是VBScript脚本写的,无需编译,而JSP使用Java作为脚本,需要编译,因此JSP要先编译成Servlet,JSP实质上就是一个Servlet,不过书写JSP要比Servlet简单的多。与ASP相比,简单就是JSP的最大优势。
后来人们发现开发动态WEB应用的后期的维护成本越来越大,因为基于ASP或JSP的页面编码是非常混乱的,比如在JSP中,需要使用<% java code ... %>格式的代码来在JSP页面中嵌入Java代码,而这很有可能切割原本的html标签页面,造成局面混乱。所以后期人们渐渐开始找出了MVC开发模式开开发WEB应用。
对于MVC,SUN公司推出的是J2EE(现在是JavaEE),微软公司推出的是ASP.Net技术。
3,微软和SUN的MVC的发展历程:
微软:CGI à ASP à ASP.NET
SUN:CGI à Servlet à JSP à J2EE
4,Java阵营的动态WEB开发经历了model1和model2时代。
Model1时代就是JSP时代,那时所有的WEB应用都是由JSP开发的,然后再加上少量的JavaBean来处理数据。也就是JSP + JavaBean 时代。JSP身兼View和Controller两种角色。这种模式的代码的重用性非常低。对于小型的应用,可以使用这种模式。如果规模较大,后期维护成本会很大。
Model2时代,就是MVC时代了,JSP只负责显示数据,JavaBean用于存储数据和逻辑处理,而Servlet用于控制数据。即JSP + JavaBean + Servlet时代。
5,关于MVC结构:
从设计模式角度来看,MVC思想非常类似于一个观察者模式,但存在少许差别,观察者模式下的观察者和被观察者是两个相互对等的对象,但对于MVC思想而言,被观察者往往只是单纯的数据体,而观察者只是单纯的视图页面。
6,其他常用的MVC模式框架。
(1)JSF:JSF是一个标准,而不是一个产品。大部分的时候,我们所说的JSF都是SUN的参考实现。目前JSF作为JEE5.0的一个部分,与JEE5.0一起发布。
JSF的行为方法在POJO中实现,JSF的Managed Bean无需继承任何的类,无需再表单和模型对象之间实现多余的控制器层。JSF中没有控制器对象,控制器有模型对象实现。
JSF的事件框架可以细化到表单中的每个字段。JSF依然是基于JSP和Servlet的,仍然是JSP和Servlet结构,因此学习相对简单。
JSF的不足:新兴的框架,使用者少,资源不丰富;并不是完全的组件化的框架,依然是JSP/Servlet架构;成熟度有待进一步提高。
(2)Tapestry:不是单纯的MVC架构,更像MVC与模板技术的结合,不仅包含了前端的MVC架构,还包含了是图层的模板技术,使用Tapestry完全可以与Servlet/JSP API 分离,是一种非常优秀的设计。
使用Tapestry就不需要使用JSP技术了,只需要使用Tapestry提供的模板技术即可,Tapestry实现了视图逻辑与业务逻辑的彻底分离。Tapestry使用组件库代替了标签库,没有标签库的概念,避免了标签库与组件结合的问题。Tapestry只有组件或页面两个概念
Tapestry具有很高的代码复用性,任何对象都可以看作可复用的组件,对于对页面灵活度要求相当高的系统,Tapestry是第一选择。Tapestry同时也有精确的错误报告。
但是由于Tapestry的学习曲线相对陡峭,文档也不丰富,所以使用面不广泛。
(3)Spring MVC:Spring提供的MVC框架,在模型,视图,控制器之间提供了非常清晰的划分,各部分耦合度极低。Spring完全基于接口编程,真正实现了与视图无关,视图也不在强求使用jsp,spring的控制器有IoC进行管理,单元测试更加方便。
Spring MVC 框架以DispatcherServlet为核心控制器,这个控制器负责拦截用户的所有请求,将请求分发到对应的业务控制器。
所有的控制器都必须实现Controller接口。Spring MVC 依然是基于JSP/Servlet的API的。
7,Struts1技术
Struts1是最早的MVC框架,核心是ActionServlet,由struts1提供,Action控制器组件由用户提供。
Struts1的缺陷:
(1)支持的表现层技术单一:只支持jsp作为表现层技术。
(2)与Servlet API的严重耦合,不容易测试。
(3)代码严重依赖于struts1 API,属于入侵式设计。
8,WebWork简介:
来自于另外一个优秀的开源组织opensymphony。这个组织另外的产品有Qutarz、OSWorkFlow等。WebWork的创始人是另一个Java领域的名人Rickard Oberg(JBoss和XDoclet的作者)。WebWork耦合性更低。
与struts1类似,WebWork的核心控制器是ServletDispatcher,由WebWork提供,业务逻辑控制器是Action,由程序员提供,WebWork完成了与Servlet API紧紧耦合的问题。
9,struts2的配置文件:
当struts2创建系统的action代理时,需要使用struts2的配置文件。Struts2的配置文件有两份:
l 配置Action的struts.xml文件;
l 配置struts2全局属性的struts.properties文件。
Struts.properties文件用于配制一些常量,例如:
Struts.devMode = true //指定struts2处于开发者模式
Struts.configuration.xml.reload =true//指定当struts2配置文件改变后,Web框架是否重新加载struts2配置文件。
10,由于Action返回result时,通过struts.xml配置接收返回的result,例如:
<result name=”” type=””>,name对应返回的result值,而type指定转向的资源类型,可以转向jsp,可以转向FreeMarker或另外一个Action,这也是struts2可以支持多种视图技术的原因。
11,struts2的标签库不仅提供了表现层技术处理,而且提供了基本的流程控制功能,还提供了国际化,ajax支持等功能。通过struts标签,开发者可以最大限度的减少页面代码的书写。
Struts2标签库几乎可以完全替代JSTL标签库,而且支持功能强大的OGNL(Object Graph Notation Language)表达式。
12,struts2的控制器组件:
是struts2框架的核心,struts的控制器由两部分组成FilterDispatcher和业务控制器Action。
实际上,struts2中起作用的业务控制器不是用户定义的Action,而是系统生成的Action代理,但该Action代理以用户定义的Action为目标。
Struts2的Action的优势:
Action完全是一个POJO,因此具有很好的代码复用性。
Action无需与Servlet API耦合,因此进行单元测试非常简单。
Action类的execute方法仅返回一个字符串作为处理结果,该处理结果可以映射到任何试图,甚至是另一个Action。
Struts2的Action为每一个请求产生一个实例,因此没有现成安全问题。- Struts2权威指南总结1:概述
- Struts2权威指南总结3:Struts2基础
- Struts2权威指南总结4:深入struts2
- Struts2权威指南总结7:拦截器
- Struts2权威指南总结9:国际化
- (概述)JavaScript权威指南笔记1
- Struts2权威指南总结2:Struts2的Hello World
- Struts2权威指南总结5:Struts2的类型转换
- Struts2权威指南总结8:struts2的输入校验
- 学习《Struts2.1权威指南》DAY1
- 读《struts2权威指南》
- 读《struts2权威指南》
- struts2权威指南
- 《HTTP权威指南》学习总结1——HTTP协议概述
- Struts2权威指南总结6:文件的上传和下载
- JavaScript权威指南第一章 概述
- HTTP权威指南-基础知识-概述
- Hadoop权威指南-HDFS概述
- ZOJ 2514 Generate Passwords 水
- 列出最常用的3个互联网应用,分析它们是平台产品还是现金牛产品
- Sax 实现XML文件解析
- hdu1285确定比赛名次(拓扑排序+优先队列)
- ZOJ 3168 Sort ZOJ7 水
- Struts2权威指南总结1:概述
- SVN版本控制DOS下操作
- SVN集成图形化操作界面
- redis基本操作
- 自定义Dialog步骤
- 【搜索】方向数组不如排兵布阵
- SVN集成MyEclipse
- volatile用法
- 【ant项目构建学习点滴】--(3)打包及运行jar文件