这学期刚开始接触s2sh框架技术,要学习好多新的东西,脑子不好使,记不住!所以产生了写学习笔记的想法。一边写一边加深理解,大部分都是学习中的所获所得,放在这里大家共同交流。
主要参考书 :1.《struts 2 实战》——人民邮电大学出版社(图灵设计丛书)。2.《struts+Spring+hibernate框架技术与项目实践》——清华大学出版社
个人感觉:《struts 2实战》这本书很是经典,有浅入深,层层推进,将struts 2的工作原理及核心内容讲的十分透彻,很值得钻研。这本书更侧重于struts2的内部实现及工作机理,读完之后你可以明白为什么要这样,这样做有什么好处,我们应该怎样做。
第二本的《struts+Spring+hibernate框架技术与项目实践》主要侧重于实战,即教你怎么做,不会教你为什么要这么做,只是对各个框架该怎么用做了一个全局性的指导,当然这是为了快速开发的目的。但是个人觉得要想真正理解S2ssh,光看写项目实践的书是不够的,找一些详细讲解其中的工作原理及内部细节的书还是很有必要。另外推荐大家学习《Hibernian实践》《spring 揭秘》。
OK!Let's go !
Struts 2 框架
struts 2是基于MVC(model-view-controller)模式的第二代web应用程序框架。struts2 新特性:
1.用来从动作逻辑中分层出横切关注低点的拦截器;
2.将少或消除xml配置基于注解的配置方式;
3.贯穿整个框架的强大的表达式语言OGNL(object-graph-navigation language);
4.支持可变更和可重用UI组建的微型MVC模式的标签API。
(如果你暂时不太理解以上四点,不要着急,以后学习过程中我们会慢慢讲到。)
Struts 2概览:MVC模式
MVC 设计模式3个关注点:模型、视图、控制器。
注意:记住这个图,就掌握了Struts2框架下的web应用程序的工作过程。
说明:控制器由struts2的FilterDispatcher扮演,它检查每一个传入的请求,并决定哪个动作处理这个请求。这里你只需告诉框架哪个URPL请求映射到哪个动作。
实现方式:xml配置文件或java注解方式(此方式潜力很大)。
补充:FilterDispatcher是Servlet的一个过滤器,在web.xml中进行配置,玩过struts2的你都懂的。
Struts2 工作原理
Struts2架构处理一个请求的工作原理如下图所示:
核心的架构组件:拦截器、OGNL、ValueStack。
拦截器:一种在请求处理之前或之后执行的Struts2组件。提供一种在其中定义不同的工作流和横切任务的架构组件,以达到简单重用,并且与其他架构关注点分离。像日志、数据验证、类型装换等这些与实际的业务逻辑无关的操作都可在拦截器中实现。举例:对于用户注册,服务器中核心的动作是向数据库中插入一条已经验证过的用户信息的记录,而验证的工作可以交给上层的拦截器去完成。你更可以通过修改拦截器来改变验证条件来达到你更苛刻的验证,而不必改变动作的核心代码。比如,你觉得密码是6-10位的限制还不够,那么你可以改成6-10位且有字母、数字及下划线组成。这样层次更清晰,操作更加灵活。(你想要什么,就横插入什么,呵呵,岂不很爽!!)
ValueStack是保管与请求相关的所有数据的一个存储区域。struts2将数据保存到一个集中的地方,你想要数据就同过OGNL去取就可以了,这是很方便的!!(想想如果将参数全部以String形式保存到request对象中,然后用的时候再一一解析出值,这是多痛苦啊!我是不愿这么做,因为效率不高!)这里的ActionContext我以后会详细讲解,这里你知道这些就可以了。
OGNL是一个用来引用、操作ValueStack中数据的强大的表达式语言!(现阶段只理解到这里就好)通过它你可以任意的操作ValueStack中的各种东东。注意:在拦截器及呈现结果阶段都可以用OGNL操作数据。其中的原理我后面会讲。
最后,想想刚学习了那些东东!!