spring(四) 手动整合web项目(SSH)

简介:  清楚了spring的IOC 和 AOP,最后一篇就来整合SSH框架把,记录下来,以后应该会用的到。

      清楚了spring的IOC 和 AOP,最后一篇就来整合SSH框架把,记录下来,以后应该会用的到。

                    --WZY

一、web项目中如何使用spring?

      当tomcat启动时,就应该加载spring的配置文件,而不是每次都要手动使用new ClassPathXmlApplicationContext来加载xml。所以,spring提供了一个ContextLoaderListener。有了它,tomcat启动时,就会加载配置文件。

      导入spring.web....jar

          

      1、web.xml中添加监听器

          

View Code
        这样配置的监听器,默认加载的是WEB-INF目录下的xml文件,而我们的配置文件在src下,所以需要进行下一步的配置。

      2、web.xml中配置 applicationContext.xml 位置

          

View Code
      3、从ServletContext中获得spring容器,创建的容器已经放在ServletContext中了

            

View Code

          

二、SSH整合所用到的jar包

      2.1、struts2所需jar

        版本:2.3.15.1

        位置:struts-2.3.15.1\apps\struts2-blank\WEB-INF\lib

            

          总共:13个jar包        

      2.2、hibernate

          版本:3.6.10

          所需jar

              1、核心jar:hibernate3.jar

                  

              2、必须:lib/required 所有

                  

              3、jpa :lib\jpa 所有

                  

              4、c3p0 \lib\optional\c3p0

                  

              5、 log4j 整合jar  slf4j-log4j12-1.7.2.jar

                  

              6、mysql驱动包  mysql-connector-java-5.1.22-bin.jar

                   

              7、二级缓存  ehcache-1.5.0.jar 、backport-util-concurrent.jar 原本要导3个,logging包在前面struts包中有了,所以无需在导入

                                  

           hibernate总共:13个jar包

      2.3、spring

          版本:3.2.0

          jar包:

             核心:4个(core、beans、expression、context) + commons-logging..jar(这个jar包在前面很多地方导入过,struts2、hibernate的二级缓存、spring都需要,只需要导一份即可)

                  

              aop:aop联盟、spring aop、aspectj、spring-aspect

                  aop联盟:spring-framework-3.0.2.RELEASE-dependencies\org.aopalliance\com.springsource.org.aopalliance\1.0.0

                  spring aop和spring-aspect:在核心包中

                  aspectj:spring-framework-3.0.2.RELEASE-dependencies\org.aspectj\com.springsource.org.aspectj.weaver\1.6.8.RELEASE     

              jdbc:2个 spring-jdbc、spring-tx

              web:1个 spring-web

              test:1个 spring-test (整合测试)

          总共:12个

      2.4、整合jar

          spring3 整合hibernate3,spring提供整合jar : spring-orm...jar

          struts2 整合 spring3 ,struts提供整合jar:struts2-spring-plugin-2.3.15.1.jar

              位置:struts-2.3.15.1\lib

          总共:2个

        

      2.5、整理jar

          前面拿到总共39个,去除一个重复的,剩下总共38个。

                

          

三、配置文件

      3.1、hibernate

          hibernate.cfg.xml  核心配置文件

          *.hbm.xml 映射文件(domain)

      3.2、spring

          applicationContext.xml

          jdbcInfo.properties

          web.xml(ContextLoaderListener)

      3.3、struts2

          struts.xml

          web.xml(前端过滤器  StrutsPrepareAndExecuteFilter)

      

四、spring整合hibernate

      4.1、首先要了解hibernate的配置文件,和hibernate需要什么,然后如何将其让spring来管理。

          hibernate.cfg.xml

            

            

        通过这两个图,可以知道,spring需要帮hibernate获取session,而获取session则先要获得sessionFactory,获取sessionFactory则需要加载配置文件。所以spring就需要提供两个东西,一个sessionFactory,一个session。spring如何做的呢?

            

View Code
        使用:

             

        这样一来,就可以将hibernte.cfg.xml给删除掉了。

        还有一个问题,事务的处理。

        简单,之前一篇文章我们就讲解了spring如何进行事务管理的,那时候使用的是jdbc管理器,现在换一个即可,使用hibernate事务管理器

            

        所以整合完hibernate后,spring的配置文件就成了这样

View Code

      总结:其实非常简单,一开始整合肯定毫无头绪,不知道从哪里下手,那么就先将一个最简单的hibernate操作对象的小demo写出来,看看hibernate需要什么,然后spring就配置什么,给什么。这样就简单明了了。

五、struts2整合spring

      5.1、struts2自己创建action。而不用spring帮我们创建

          struts.xml

                     

          action中userService对象的创建就需要让spring帮我们创建

                  

          applicationContext.xml

              

          这样,就可以了。

      

      5.2、spring帮我们创建action,struts2什么也不用做了。‘

            前提:需要导入struts-spring-plugin...jar

          

      全部整合完后的applicationContext.xml

View Code

六、总结

      那么到这里,手动整合ssh就结束了,其实非常简单,一步步来,从导包到整合hibernate在整合struts的步骤进行,那么就可以成功整合了,上面所有的我都没有采用接口编程,为了方便,日后注意一下这点即可。非常简单。

      但是在整合hibernate时,我们的你domain都映射文件都是自己手动编写的,实际开发中肯定不需要一个个手动编写,因为是先有数据库,然后在来写你domain,所以之后会说到通过反转引擎根据数据库中的表来创建domain和映射文件。

        

相关文章
|
2月前
|
Java API 数据库
构建RESTful API已经成为现代Web开发的标准做法之一。Spring Boot框架因其简洁的配置、快速的启动特性及丰富的功能集而备受开发者青睐。
【10月更文挑战第11天】本文介绍如何使用Spring Boot构建在线图书管理系统的RESTful API。通过创建Spring Boot项目,定义`Book`实体类、`BookRepository`接口和`BookService`服务类,最后实现`BookController`控制器来处理HTTP请求,展示了从基础环境搭建到API测试的完整过程。
48 4
|
11天前
|
中间件 Go API
Go语言中几种流行的Web框架,如Beego、Gin和Echo,分析了它们的特点、性能及适用场景,并讨论了如何根据项目需求、性能要求、团队经验和社区支持等因素选择最合适的框架
本文概述了Go语言中几种流行的Web框架,如Beego、Gin和Echo,分析了它们的特点、性能及适用场景,并讨论了如何根据项目需求、性能要求、团队经验和社区支持等因素选择最合适的框架。
38 1
|
18天前
|
存储 运维 安全
Spring运维之boot项目多环境(yaml 多文件 proerties)及分组管理与开发控制
通过以上措施,可以保证Spring Boot项目的配置管理在专业水准上,并且易于维护和管理,符合搜索引擎收录标准。
31 2
|
26天前
|
JavaScript 前端开发 开发工具
web项目规范配置(husky、eslint、lint-staged、commit)
通过上述配置,可以确保在Web项目开发过程中自动进行代码质量检查和规范化提交。Husky、ESLint、lint-staged和Commitlint共同作用,使得每次提交代码之前都会自动检查代码风格和语法问题,防止不符合规范的代码进入代码库。这不仅提高了代码质量,还保证了团队协作中的一致性。希望这些配置指南能帮助你建立高效的开发流程。
34 5
|
2月前
|
设计模式 前端开发 Java
Spring MVC——项目创建和建立请求连接
MVC是一种软件架构设计模式,将应用分为模型、视图和控制器三部分。Spring MVC是基于MVC模式的Web框架,通过`@RequestMapping`等注解实现URL路由映射,支持GET和POST请求,并可传递参数。创建Spring MVC项目与Spring Boot类似,使用`@RestController`注解标记控制器类。
38 1
Spring MVC——项目创建和建立请求连接
|
2月前
|
Java 关系型数据库 MySQL
Maven——创建 Spring Boot项目
Maven 是一个项目管理工具,通过配置 `pom.xml` 文件自动获取所需的 jar 包,简化了项目的构建和管理过程。其核心功能包括项目构建和依赖管理,支持创建、编译、测试、打包和发布项目。Maven 仓库分为本地仓库和远程仓库,远程仓库包括中央仓库、私服和其他公共库。此外,文档还介绍了如何创建第一个 SpringBoot 项目并实现简单的 HTTP 请求响应。
132 1
Maven——创建 Spring Boot项目
|
2月前
|
Java 关系型数据库 MySQL
如何使用 maven 创建一个 Spring Boot项目
Maven 是一个强大的项目管理工具,通过配置 `pom.xml` 文件自动获取所需的 jar 包,提高开发效率。其核心功能包括项目构建和依赖管理。项目构建支持编译、测试、打包和发布等流程,而依赖管理则通过中央仓库、本地仓库和私有服务器获取和管理项目依赖。示例中展示了如何创建第一个 SpringBoot 项目并实现简单接口。
29 1
如何使用 maven 创建一个 Spring Boot项目
|
1月前
|
JavaScript 前端开发 数据安全/隐私保护
Web开发者必看:手把手教你如何轻松播放m3u8流地址,解锁视频播放新技能,让你的项目更上一层楼!
【10月更文挑战第23天】随着互联网技术的发展,m3u8格式因良好的兼容性和高压缩率被广泛用于网络流媒体传输。本文介绍如何在Web端播放m3u8流地址,包括引入视频播放器(如Video.js)、创建播放器容器、初始化播放器及播放m3u8流的具体步骤。此外,还涉及处理加密m3u8流的示例。
121 1
|
2月前
|
JSON 搜索推荐 API
Python的web框架有哪些?小项目比较推荐哪个?
【10月更文挑战第15天】Python的web框架有哪些?小项目比较推荐哪个?
62 1
|
2月前
|
Java Apache Maven
Java/Spring项目的包开头为什么是com?
本文介绍了 Maven 项目的初始结构,并详细解释了 Java 包命名惯例中的域名反转规则。通过域名反转(如 `com.example`),可以确保包名的唯一性,避免命名冲突,提高代码的可读性和逻辑分层。文章还讨论了域名反转的好处,包括避免命名冲突、全球唯一性、提高代码可读性和逻辑分层。最后,作者提出了一个关于包名的问题,引发读者思考。
Java/Spring项目的包开头为什么是com?