SSH架构实战篇.docx
- 文档编号:2392595
- 上传时间:2022-10-29
- 格式:DOCX
- 页数:53
- 大小:663.47KB
SSH架构实战篇.docx
《SSH架构实战篇.docx》由会员分享,可在线阅读,更多相关《SSH架构实战篇.docx(53页珍藏版)》请在冰豆网上搜索。
SSH架构实战篇
一、前言
前一阵列刚换了个新的工作环境,然后自己的baby也刚出生,一直没有时间去做工作以后的其它事了,担搁了一段日子。
今天儿子满一周了,我内人她家帮着照顾着,总算我可以喘口气休息一下,因此决定将这个系列的博文继续下去,同时也将此篇献给我刚出生一周的儿子和幸苦了10个月的爱人。
二、基本概念
Spring,作为一个流行框架它给我们在日常工程中的框架搭建提供了太多的便利了,它就像一个骨架一样,你可以在上面自己去塑出肌肤与血肉并赋于它灵魂。
从今天开始我们将要连续几天基于Spring的基础上来讲软件开发框架,由于Spring被应用的太广泛太广泛了,因此此系列教程可以作为Spring开发的一套基础教程也可以称其为“典范或者公式化教程”吧.
此套教程会覆盖以下内容:
1)Spring+Struts1+jdbctemplate;
2)Spring+Struts1+Hibernate;
3)Spring+Struts2+ibatis;
4)Spring+Struts1、2+任意DAO层的UnitTest;
5)甚至还会讲到如何使用Spring来构建应用程序,对,你没听错使用Spring可以构建单独运行的java应
用程序,尤其在银行、保险业中有一种叫“批处理”的业务,就是应用程序,那么我们使用Spring会为
我们的批处理作业带来什么样的好处呢?
敬请期待!
三、Spring+Struts+jdbctemplate
3.1框架介绍
作为架构师,同时你也必须为“框架师”,架构是从广意上来讲的,它的知识需要覆盖到硬件、软件、协议甚至业务背景。
但是一个架构师在项目中时它又必须是一个“框架师”,就和造房子一样,框架搭的好,房子造出来才能坚固。
我们就先来看我们第一幢房子的脚手加架-Spring在我们项目中的使用吧,先来看架构图,一般我喜欢用Visio来画架构图,画完后直接在Visio的workspace里ctrl+a全选后回到word后按ctrl+v,这样你的word文本中就有了一幅visio的图了,而你在word文档中双击这个visio图它会自动在当前的文档中打开visio的workspace以便于你来编辑你的visio图,这样你就不用来回在word与visio间进行切换了,也不用每次把visio转成jpg后再到word中插入图片了,这是一个标准操作模式,希望能够为大家今后的操作带来方便。
当然,平时看到好的文档,好的架构图把它收藏起来、分门别类相信你的文档会越写越漂亮.
Look,这就是我们的框架。
ØSpring
在此我们使用3.1,它负责IOC,AOP等工作,用于代理业务层(Service层)的事务。
ØStruts
在此我们使用1.3,它负责控制层以及相关的JSP页面(采用Struts标签)。
控制层通过业务层再访问数据库层。
ØSpringJdbcTemplate
负责ORMapping,由于我们使用的数据还需要进行一些复杂的汇总与计算,因此在未来系统开发中还需要开发一系列的StoreProcedure(存储过程),用jdbctemplate不仅可以方便灵活的使用SQL查询语句,同时也为访问各种数据库的存储过程带来了方便。
该框架优点:
Ø分层清晰,替换灵活,易于扩展
上述框架采用ViewLayer,ControllerLayer,ServiceLayer,DAOLayer进行分层。
层与层之间全部基于接口。
1)逻辑的任何变动不影响到代码的运行
2)自动代理数据库的事务操作,尤于采用了Spring的DataSourceTransactionManager,该类是
一个完全基于AOP的事务自动代理,由于使用的是AOP中的围绕机制,因此该类会自动利用AOP功能
在数据库操作时进行事务的开启、提交、关闭并且在遇见Exception时会自动回滚。
该类使用通配符
的方式,对于业务层进行事务管理。
由于Controller层不直接操作DAO,而是通过Service层来操作
事务的,因此事务的切片定位在Service层。
另外,由于一个Service方法有可能涉及到多个DAO操
作,所以将事务定位在Service层有助于保持数据的一致性。
3)层中相关技术的替换不影响到其它层面,层与层之间的全部基于接口,因此各个层内自身的逻辑
或者是采用的相关技术的变化不影响到其它层。
举例来说:
现在的DAO层是SpringJdbcTemplate,
如果将来换成Hibernate或者是EJB的JPA来做DAO层的话,对于整个DAO层只需要按照原有接口重
写相关的impl类,而view层,controller层与Service层的变动为“零代码”改动。
Ø简化配置,提高生产力
本框架使用的是Spring3.0+Struts2.x作为系统框架的核心。
传统的框架伴随着一堆xml文件的配置,比如说用于描述Struts中Action的配置,层与层之间的依赖关系,甚至特定的class需要用到的外部变量都需要进行基于xml格式的配置文件的修改。
Xml配置文件的改动,如果出现一处错误往往会影响整个系统的运行,或者甚至导致系统运行崩溃。
而本框架使用了JDK1.6中的“全注解”技术,除了需要改动一个cbbs.properties文件,各层之间的调用全部使用的Annotation,比如说我们需要在一个Struts的Action中调用一个Service,只需要在相关的Action的Class里进行如下的注释即可:
@Resource
EmailActivationServiceactivateService;
而传统的需要作下面这样的配置:
设想,假如有100个类,上百个Service,再加上数百个DAO,我们的xml的配置将是多么的庞大啊,这就是典型的“xml泛滥”,这同时也将导致程员工工作效率,生产效率的低下。
而现在采用了Annotation方式来搭建框架,这在极大程度上使得程序员与框架之间是“透明”的,让程序员将更多时间花在“业务”的实现上。
这一切都用的是Spring的“注解”特性,即
“ component-scanbase-package="xxx.xxx.xxx"/>”。 Ø该框架不需要使用容器的jdbcjndi,而自带了一个c3p0的jdbcconnectionpool,它将会随着容器的启动而启动,结束而销亡. Ø实现了基本的资源保护 我们在该框架中使用了以下几种技术的混合来实现外部资源文件的安全保护 1)基于Spring的Properties的注入 2)在properties文件与spring的配置xml文件里实现了placeholder,即替换符,记住它的英文的表达叫“placeholder”。 3)使用了第三方开源免费包jasypt与spring结合自动对properties文件中的关键内容如: password进行加密与解密 3.2框架搭建 首先使用eclipse建立一个”dynamicewebproject”,我们管它叫”alpha”吧,我们的第一个孩子。 然后与src同级的地方建立一个resource目录,并把它加入classpath 别忘了把Defaultoutputfolder: 从bin改成alpha/WebContent/WEB-INF/classes 再建立一个目录叫ext-lib的目录,把tomcat的lib目录内的jsp-api.jar与servlet-api.jar两个文件拷入该文件夹内.因为我们在涉及到一些servlet与jsp的编写时,需要使用这两个jar进行编译,但我们又不能把这两个jar文件与我们的工程一起发布到tomcat的webapp目录下,因为tomcat已经含有这两个jar文件了,所以这两个jar文件需要以下面的方式引入我们的工程而不随着我们的工程一起发布: 这是工程目录结构整理完后的样子,请照着该结构在resource目录下自行建立其它几个目录(不要去管文件,先把目录建完)。 然后我们把 1)struts 2)spring 3)c3p0-0.9.1.2.jar等 一些需要的jar文件一个个都copy到我们工程的WEB-INF/lib目录下并刷新工程。 这些jar在你下载的spring、struts、hibernate包中都有带,可以自行去查找. 修改我们的web.xml文件,尤其注意下面红色与加粗的部分,一粗就爽了是吧,嘿! web.xml xmlversion="1.0"encoding="UTF-8"? > xsi="http: //www.w3.org/2001/XMLSchema-instance" xmlns=" xmlns: web=" xsi: schemaLocation=" id="WebApp_ID"version="2.5">
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- SSH 架构 实战