何为
struts2
?
先看一个图:
这个图很明确的说明了
struts2
的由来,它是由
webwork
和
struts
相结合的结果,因此它不仅仅事
struts1
的改进版本了,而是一个完全很新的东西。
Struts2
网站上有这样一段话:
Apache Struts 2 is an elegant, extensible framework
for creating enterprise-ready Java web applications. The framework
is designed to streamline the full development cycle, from building, to
deploying, to maintaining applications over time.
Apache Struts 2 was originally known as WebWork 2. After working
independently for several years, the WebWork and Struts communities joined
forces to create Struts2
. This new version of Struts is simpler to
use and closer to how Struts was always meant to be.
大体的意思就是:
Apache
的
Struts 2
的是一个优雅,可扩展的框架
用于创建企业级
Java Web
应用程序。
该框架旨在简化整个开发周期,从建设,部署以及其他任何时间。
Apache
的
Struts 2
的原名
WebWork 2
。
数年之后,
WebWork
和
Struts
的社区的联手创建
Struts
2
。
这个新版本的
Struts
是简单的使用,更贴近我们想要的。
现在我们知道了,
struts2
是以
webwork
为核心的,所以和
struts1
没有太大关系除了名字相似以外。
那么
struts2
和
struts1
到底有哪些不同,网上有很多,我找了几个明显的,当然这不是我写的,是我在网上找的分析的比较好的:
Action
类
:
• Struts1
要求
Action
类继承一个抽象基类。
Struts1
的一个普遍问题是使用抽象类编程而不是接口。
• Struts 2 Action
类可以实现一个
Action
接口,也可实现其他接口,使可选和定制的服务成为可能。
Struts2
提供一个
ActionSupport
基类去
实现
常用的接口。
Action
接口不是必须的,任何有
execute
标识的
POJO
对象都可以用作
Struts2
的
Action
对象。
线程模式
:
• Struts1 Action
是单例模式并且必须是线程安全的,因为仅有
Action
的一个实例来处理所有的请求。单例策略限制了
Struts1 Action
能作的事,并且要在开发时特别小心。
Action
资源必须是线程安全的或同步的。
• Struts2 Action
对象为每一个请求产生一个实例,因此没有线程安全问题。(实际上,
servlet
容器给每个请求产生许多可丢弃的对象,并且不会导致性能和垃圾回收问题)
Servlet
依赖
:
• Struts1 Action
依赖于
Servlet API ,
因为当一个
Action
被调用时
HttpServletRequest
和
HttpServletResponse
被传递给
execute
方法。
• Struts 2 Action
不依赖于容器,允许
Action
脱离容器单独被测试。如果需要,
Struts2 Action
仍然可以访问初始的
request
和
response
。但是,其他的元素减少或者消除了直接访问
HttpServetRequest
和
HttpServletResponse
的必要性。
可测性
:
•
测试
Struts1
Action
的一个主要问题是
execute
方法暴露了
servlet API
(这使得测试要依赖于容器)。一个第三方扩展--
Struts TestCase
--提供了一套
Struts1
的模拟对象(来进行测试)。
• Struts 2 Action
可以通过初始化、设置属性、调用方法来测试,
“
依赖注入
”
支持也使测试更容易。
捕获输入
:
• Struts1
使用
ActionForm
对象捕获输入。所有的
ActionForm
必须继承一个基类。因为其他
JavaBean
不能用作
ActionForm
,开发者经
常创建多余的类捕获输入。动态
Bean
(
DynaBeans
)可以作为创建传统
ActionForm
的选择,但是,开发者可能是在重新描述
(
创建
)
已经存
在的
JavaBean
(仍然会导致有冗余的
javabean
)。
• Struts 2
直接使用
Action
属性作为输入属性,消除了对第二个输入对象的需求。输入属性可能是有自己
(
子
)
属性的
rich
对象类型。
Action
属性能够通过
web
页面上的
taglibs
访问。
Struts2
也支持
ActionForm
模式。
rich
对象类型,包括业务对象,能够用作输入
/
输出对象。这种
ModelDriven
特性简化了
taglib
对
POJO
输入对象的引用。
表达式语言:
• Struts1
整合了
JSTL
,因此使用
JSTL EL
。这种
EL
有基本对象图遍历,但是对集合和索引属性的支持很弱。
• Struts2
可以使用
JSTL
,但是也支持一个更强大和灵活的表达式语言--
"Object Graph Notation Language"
(OGNL).
绑定值到页面(
view
)
:
• Struts 1
使用标准
JSP
机制把对象绑定到页面中来访问。
• Struts 2
使用
"ValueStack"
技术,使
taglib
能够访问值而不需要把你的页面(
view
)和对象绑定起来。
ValueStack
策略允许通过一系列名称相同但类型不同的属性重用页面(
view
)。
类型转换:
• Struts 1 ActionForm
属性通常都是
String
类型。
Struts1
使用
Commons-Beanutils
进行类型转换。每个类一个转换器,对每一个实例来说是不可配置的。
• Struts2
使用
OGNL
进行类型转换。提供基本和常用对象的转换器。
校验:
• Struts 1
支持在
ActionForm
的
validate
方法中手动校验,或者通过
Commons Validator
的扩展来校验。同一个类可以有不同的校验内容,但不能校验子对象。
• Struts2
支持通过
validate
方法和
XWork
校验框架来进行校验。
XWork
校验框架使用为属性类类型定义的校验和内容校验,来支持
chain
校验子属性
Action
执行的控制:
• Struts1
支持每一个模块有单独的
Request Processors
(生命周期),但是模块中的所有
Action
必须共享相同的生命周期。
• Struts2
支持通过拦截器堆栈(
Interceptor Stacks
)为每一个
Action
创建不同的生命周期。堆栈能够根据需要和不同的
Action
一起使用。
知道了
struts2
是什么的东西后,下面开始真的学习
struts2
。
分享到:
相关推荐
NULL 博文链接:https://hbiao68.iteye.com/blog/1452476
这个是本人自学struts2框架时的总结笔记,里面关于struts2的基本知识很是详尽,如果想要进阶的就不要看了,这只是struts2基础的笔记,个人学习用的,绝不掺假!
NULL 博文链接:https://changluo.iteye.com/blog/1842213
Struts1新手入门笔记Struts1新手入门笔记
本文档记录了Struts2初学中的所有要点笔记,非常详尽的知识点说明并附加了学习者对知识的理解过程,是新人学习Struts2框架的必备参考典范。
自学传智博客struts2-黎活明-源码-第01讲_01介绍struts2及struts2开发环境的搭建_DemoStruts2.rar; 笔记地址:http://www.guloulou.com/?p=1253
struts2笔记。 适合初学者参考使用。罗列了一些struts2的重点内容,适合自学
struts各个知识点汇总,重点把握struts要害,快速掌握并着手应用。详细,简明
自学struts2做的笔记,自己感觉用起来挺方便的,内容也全面。查询起来也方便。基本涵盖struts2常用资源。
Struts 国际化 类型转换 Jfreechart 等学习笔记 自学笔记 仅供参考
自学传智博客struts2-黎活明-源码-第02讲_02第一个struts2应用开发_DemoStruts2.rar 笔记地址:http://www.guloulou.com/?p=1252
经典的struts自学宝典,都是我的潜心专研,精心总结出来的
非常好的一个自学文档,精辟,囊括所有重点。
希望对大家有所帮助,j2ee的一些心得体会
Struts2的教程笔记.简单的入手,适合初学者,自学者.
看的东西不在多,而在于精, 程序设计最重要的就是上级操作了, 既然选择了,就该要有坚持的觉悟... Cookie使用. ...里面是当年自学JAVA时的一些笔记,内容都是TXT格式的,都是一些基础性的概念总结。
框架开发关于hibernate和struts的个人笔记
本Jva(Java)学习笔记是一份深入且详尽的教程,不仅包括Java的基础知识,还融入了作者的个人见解和实际编程经验。内容涵盖: Java基础:数据类型、控制流、异常处理。 面向对象编程:类与对象、继承、多态、封装。...
自己整理的一些资料,不需要积分,希望对大家有帮助。 里面包有如下的一些java资料 Ant使用指南.pdf cvs.pdf Eclipse入门-- Eclipse的使用简介及插件开发.PDF ...spring2中文开发参考手册.chm a.txt