《第3讲-Spring开发与SSH2组合框架整合讲义》由会员分享,可在线阅读,更多相关《第3讲-Spring开发与SSH2组合框架整合讲义(66页珍藏版)》请在金锄头文库上搜索。
1、Spring开发与SSH2组合框架整合主讲人:孙宏旭哈尔滨工程大学计算机科学与技术学院目录Spring开发SSH2组合框架整合简单总结课后作业目录Spring开开发SSH2组合框架整合简单总结课后作业Spring开发Spring简介IoC/DI容器AOPSpring开发Spring简介介IoC/DI容器AOPSpring简介Spring是一个开源框架,它由Rod Johnson创建。它是为了解决企业应用开发的复杂性而创建的。Spring使用基本的JavaBean来完成以前只可能由EJB完成的事情。然而,Spring的用途不仅限于服务器端的开发。从简单性、可测试性和松耦合的角度而言,任何Java
2、应用都可以从Spring中受益。Spring简介简单来说,Spring是一个轻量级的控制反转(IoC)和面向切面编程(AOP)的容器框架。Spring特征如下:轻量量从大小与开销两方面而言Spring都是轻量的。完整的Spring框架可以在一个大小只有1MB多的JAR文件里发布。并且Spring所需的处理开销也是微不足道的。此外,Spring是非侵入式的:典型地,Spring应用中的对象不依赖于Spring的特定类。Spring简介简单来说,Spring是一个轻量级的控制反转(IoC)和面向切面编程(AOP)的容器框架。Spring特征如下:轻量量从大小与开销两方面而言Spring都是轻量的。
3、完整的Spring框架可以在一个大小只有1MB多的JAR文件里发布。并且Spring所需的处理开销也是微不足道的。此外,Spring是非侵入式的:典型地,Spring应用中的对象不依赖于Spring的特定类。Spring简介控制反控制反转Spring通过一种称作控制反转(IoC)的技术促进了松耦合。当应用了IoC,一个对象依赖的其它对象会通过被动的方式传递进来,而不是这个对象自己创建或者查找依赖对象。你可以认为IoC与JNDI相反不是对象从容器中查找依赖,而是容器在对象初始化时不等对象请求就主动将依赖传递给它。Spring简介面向切面面向切面编程程Spring提供了面向切面编程的丰富支持,允许
4、通过分离应用的业务逻辑与系统级服务(例如审计(auditing)和事务(transaction)管理)进行内聚性的开发。应用对象只实现它们应该做的完成业务逻辑仅此而已。它们并不负责(甚至是意识)其它的系统级关注点,例如日志或事务支持。 Spring简介容器容器Spring包含并管理应用对象的配置和生命周期,在这个意义上它是一种容器,你可以配置你的每个bean如何被创建基于一个可配置原型(prototype),你的bean可以创建一个单独的实例或者每次需要时都生成一个新的实例以及它们是如何相互关联的。然而,Spring不应该被混同于传统的重量级的EJB容器,它们经常是庞大与笨重的,难以使用。 S
5、pring简介框架框架Spring可以将简单的组件配置、组合成为复杂的应用。在Spring中,应用对象被声明式地组合,典型地是在一个XML文件里。Spring也提供了很多基础功能(事务管理、持久化框架集成等等),将应用逻辑的开发留给了开发者。所有Spring的这些特征使开发者能够编写更干净、更可管理、并且更易于测试的代码。它们也为Spring中的各种模块提供了基础支持。Spring框架的七个模块Spring Core模块Spring Core 是Spring 的核心容器,实现了Spring 框架的基本功能IoC(Inversion of Control,控制反转)。Spring 其它所有的功能
6、模块都必须依靠它作为支撑。正如上所说,IoC作为Spring 框架的基础,因此Spring Core 模块是其它所有模块的基石。Spring AOP模块通过Spring AOP模块,Spring实现了对AOP的支持。此模块为Spring实现对应用程序中事务管理的支持提供了一个基础。有了该模块,即使不使用EJB 组件,Spring也可以提供声明式事务管理。Spring DAO模块Spring DAO模块提供了JDBC 抽象层,使JDBC 编程更加简化。它简化了数据库的异常信息,提供了声明式事务管理和编程式事务管理两种事务管理方式。Spring Context模块Spring Context模块扩
7、展了BeanFactory 的功能,提供了JNDI 访问、EJB 支持、远程调用(RMI)、Java Mail、任务调度等企业级功能的支持。Spring ORM模块Spring ORM模块提供了“对象关系模式映射”(Object-Relation Mapping)的支持。因此,它使得常见的工具如Hibernate、iBATIS、JDO 等可以很好的集成到Spring 应用中。Spring Web模块Spring Web模块为Web 应用提供了上下文支持,并且简化了Web 应用中常见参数绑定到对象的操作。Spring MVC模块Spring MVC模块是Spring提供的MVC 框架。在Spri
8、ng 2.5 版本中,它包括对Spring Web MVC 和Spring Portlet MVC的支持。此外,它还提供了对集成其它MVC框架(如Struts、JSF等)的支持、提供了对pdf 文档的支持等。Spring开发Spring简介IoC/DI容器容器 AOPIoC/DI容器 IoC/DI概念宿主DI容器配置元数据的方式受管Bean的作用域IoC/DI概念IoC(Inversion of Control)中文译为控制反转又称为“依赖注入”(DI Dependence Injection)IoC的基本概念是:不创建对象,但是描述创建它们的方式,在代码中不直接与对象和服务连接,但在配置文件
9、中描述哪一个组件需要哪一项服务,容器负责将这些联系在一起。IoC/DI概念IoC的原理是基于OO设计原则的The Hollywood Principle:Dont call us, well call you(别找我,我会来找你的),也就是说,所有的组件都是被动的(Passive),所有的组件初始化和调用都由容器负责,组件处在一个容器当中,由容器负责管理。简单的来讲,就是由容器控制程序之间的关系,而非传统实现中由程序代码直接操控。这也就是所谓“控制反转”的概念所在:控制权由应用代码中转到了外部容器,控制权的转移,是所谓反转。宿主DI容器配置元数据的方式基于XML的DI容器配置元数据基于注解的D
10、I容器配置元数据注解配置相对于XML配置具有的优势注解配置和 XML配置的适用场合基于XML的DI容器配置元数据基于注解的DI容器配置元数据Annotation第一步:a)修改xml文件b) 参考文档Spring2.5-中文参考手册c)基于注解的DI容器配置元数据Autowireda)默认按类型by typeb) 如果想用byName,使用Qulifierc)写在private field(第三种注入形式)(不建议,破坏封装)d) 如果写在set上,Qualifier需要写在参数上基于注解的DI容器配置元数据Resource(重要)a)加入:j2ee/common-annotations.ja
11、rb) 默认按名称,名称找不到,按类型c)可以指定特定名称d) 推荐使用e)不足:如果没有源码,就无法运用annotation,只能使用xml基于注解的DI容器配置元数据Component Service Controller Repositorya)初始化的名字默认为类名首字母小写b) 可以指定初始化bean的名字ScopePostConstruct = init-method; PreDestroy = destroy-method;注解配置相对于 XML 配置具有的优势 它可以充分利用 Java 的反射机制获取类结构信息,这些信息可以有效减少配置的工作。如使用 JPA 注解配置 ORM
12、映射时,我们就不需要指定 POJO 的属性名、类型等信息,如果关系表字段和 POJO 属性名、类型都一致,甚至无需编写任务属性映射信息因为这些信息都可以通过 Java 反射机制获取。注解配置相对于 XML 配置具有的优势 注解和 Java 代码位于一个文件中,而 XML 配置采用独立的配置文件,大多数配置信息在程序开发完成后都不会调整,如果配置信息和 Java 代码放在一起,有助于增强程序的内聚性。而采用独立的 XML 配置文件,程序员在编写一个功能时,往往需要在程序文件和配置文件中不停切换,这种思维上的不连贯会降低开发效率。因此,在很多情况下,注解配置比 XML 配置更受欢迎,注解配置有进一
13、步流行的趋势,Spring 2.5 的一大增强就是引入了很多注解类。 注解配置和 XML配置的适用场合注解配置不一定在先天上优于XML配置。如果 Bean的依赖关系是固定的,(如 Service 使用了哪几个 DAO 类),这种配置信息不会在部署时发生调整,那么注解配置优于XML配置;反之,如果这种依赖关系会在部署时发生调整,XML配置显然又优于注解配置,因为注解是对 Java 源代码的调整,需要重新改写源代码并重新编译才可以实施调整。注解配置和 XML配置的适用场合如果 Bean不是自己编写的类(如 JdbcTemplate、SessionFactoryBean 等),注解配置将无法实施,此
14、时XML配置是唯一可用的方式。注解配置往往是类级别的,而 XML配置则可以表现得更加灵活。比如相对于 Transaction 事务注解,使用aop/tx命名空间的事务配置更加灵活和简单。注解配置和 XML配置的适用场合所以在实现应用中,往往需要同时使用注解配置和XML配置,对于类级别且不会发生变动的配置可以优先考虑注解配置;而对于那些第三方类以及容易发生调整的配置则应优先考虑使用XML配置。Spring会在具体实施Bean创建和Bean注入之前将这两种配置方式的元信息融合在一起。受管Bean的作用域Spring开发Spring简介IoC/DI AOPAOPAOP是OOP的延续,是(Aspect
15、 Oriented Programming)的缩写,意思是面向切面编程。主要的功能是:日志记录,性能统计,安全控制,事务处理,异常处理等等。 主要的意图是:将日志记录,性能统计,安全控制,事务处理,异常处理等代码从业务逻辑代码中划分出来,通过对这些行为的分离,我们希望可以将它们独立到非指导业务逻辑的方法中,进而改变这些行为的时候不影响业务逻辑的代码。AOP可以通过预编译方式和运行期动态代理,实现在不修改源代码的情况下给程序动态统一添加功能的一种技术。AOP实际是GoF设计模式的延续,设计模式孜孜不倦追求的是调用者和被调用者之间的解耦,AOP可以说也是这种目标的一种实现。在Spring中提供了面
16、向切面编程的丰富支持,允许通过分离应用的业务逻辑与系统级服务(例如审计(auditing)和事务(transaction)管理)进行内聚性的开发。应用对象只实现它们应该做的完成业务逻辑仅此而已。它们并不负责(甚至是意识)其它的系统级关注点,例如日志或事务支持。目录Spring开发SSH2组合框架整合合框架整合简单总结课后作业SSH2组合框架整合SSH2组合框架整合准备工作实例设计-留言管理系统SSH2组合框架整合SSH2组合框架合框架整合准整合准备工作工作实例设计-留言管理系统组合开发的架构细节SSH2组合框架版本信息导入核心jar包导入核心jar包jar包名称所在位置说明struts2-co
17、re-2.1.6.jarstruts/lib/xwork-2.1.2.jarstruts/lib/ognl-2.6.11.jarstruts/lib/freemarker-2.3.13.jarstruts/lib/commons-logging-1.0.4.jarstruts/lib/commons-io-1.4.jarstruts/lib/commons-fileupload-1.2.1.jarstruts/lib/struts2-spring-plugin-2.1.6.jarstruts/lib/Spring插件导入核心jar包导入核心jar包jar包名称所在位置说明spring.jars
18、pring/dist/aspectjrt.jarspring/lib/aspectj/AOPaspectjweaver.jarspring/lib/aspectj/AOPcglib-nodep-2.1_3.jarspring/lib/cglib/代理,二进制增强common-annotations.jarspring/lib/j2ee/Resourcecommons-dbcp.jarspring/lib/jarkata-commons/commons-pool.jarspring/lib/jarkata-commons/导入核心jar包导入核心jar包jar包名称所在位置说明hibernate
19、3.jarhibernate/antlr-2.7.6.jarhibernate/lib/required/解析HQLcommons-collections-3.1.jarhibernate/lib/required/集合框架dom4j-1.6.1.jarhibernate/lib/required/解析xmljavassist-3.9.0.GA.jarhibernate/lib/required/jta-1.1.jarhibernate/lib/required/hibernate transactionslf4j-api-1.5.8.jarhibernate/lib/required/hib
20、ernate-logslf4j-log4j12-1.5.8.jar需要下载导入核心jar包导入核心jar包jar包名称所在位置说明hibernate-annotations.jarhibernate-annotations/hibernate-commons-annotations.jarhibernate-annotations/lib/ejb3-persistence.jarhibernate-annotations/lib/Entity导入核心jar包导入其它jar包jar包名称所在位置说明log4j-1.2.15.jarspring/lib/log4j/log4j日志junit-4.4
21、.jarspring/lib/junit/junit测试c3p0-0.9.1.2.jarspring/lib/c3p0/c3p0数据源sqljdbc.jar需要下载sql server驱动SSH2组合框架整合SSH2组合框架整合准备工作实例例设计-留言管理系留言管理系统实例设计-留言管理系统实现对留言内容的管理功能,包括增加、修改、删除、查询等;系统流程图数据库设计创建数据库MessManageSys创建表message message表结构字段类型说明idint序号titlevarchar(255)标题authorvarchar(255)作者contentvarchar(255)内容目录Sp
22、ring开发SSH2组合框架整合简单总结课后作业简单总结程序设计风格项目整体布局分层思想程序设计风格标识符的命名程序的注释视觉组织空格、空行和移行标识符的命名标识符包括模块名、变量名、常量名、标号名、子程序名以及数据区名、缓冲区名等。这些名字应能反映它所代表的实际东西,使其能够见名知意,有助于对程序功能的理解。例如,用times表示次数,用total表示总量,用average表示平均值,用sum表示和,等等。名字不要过长,必要时可使用缩写名字,要注意缩写规则要一致,并且要给每个名字加注释。同时,在一个程序中,一个变量只应用于一种用途。标识符的命名一般约定:变量名是以小写字母开头。如果变量名包含
23、了多个单词,而这些单词要组合在一起,则第一个单词后的每个单词的第一个字母使用大写,如isVisible。程序的注释注释分为序言性注释和功能性注释。序言性注释通常置于每个程序模块的开头部分,它应当给出程序的整体说明,对于理解程序本身具有引导作用。功能性注释嵌在源程序体中,用以描述其后的语句或程序段,也就是解释下面要“做什么”,或是执行了下面的语句会怎么样。视觉组织空格、空行和移行一个程序如果写得密密麻麻分不出层次来,常常是很难看懂的。应该利用空格、空行和移行组织程序的视觉结构。空格:要恰当地利用空格,使程序更容易看清楚。空行:自然的程序段之间可用空行隔开。移行:移行也叫做向右缩格。它是指程序中的各行不必都左端对齐,都从第一格起排列。因为这样做使程序完全分不清层次关系。项目整体布局分层思想目录Spring开发SSH2组合框架整合简单总结课后作后作业课后作业复习课上讲的有关Spring的知识点搭建SSH2组合框架项目,实现用户登录、对数据库表的CRUD操作等功能结束谢谢大家!