SSH框架整合

SSh=struts2+spring+hibernate  
struts2 2.3.24
spring 4.2.4
hibernate 5.0.7
关于xml配置文件的整合方式 SSH整合jar包 Struts2框架需要jar包
Asm 是关于字节码操作
Commons-fileupload 关于文件上传
Commons-io 关于io流操作工具
Commons-lang 也是一个工具,包含了关于数据与字符串操作
Freemaker 标签库模板文件
Javassist 它也是关于字节码操作,动态代理可以使用它实现(类似于cglib)
Log4j关于日志
Ognl 关于ognl表达式
Struts2-core  xwork-cor  struts2框架底层是使用xwork
Struts2与spring整合还需要这个包
如果需要使用struts2提供的json处理
注意:如果使用注解方案,我们还需要导入一个jar包
Hibernate框架需要的jar包
Antlr 语法解析包
Dom4j 解析xml
Geronimo-jta  apache geronimo它是一个开源javaEE服务器 Geronimo-jta是这个开源项目提供jar包,在hibernate中是关于jta事务相关
Hibernate-commoins-annotations
这个包是我们在hibernate下来使用jpa相关的注解,这样它不依赖于hibernate
Hibernate-core 开发hibernate必须
Hibernate-jpa 它是关于hibernate对jpa的支持
Jandex 用于索引annotation
Javassist 关于字节码操作(注意:strtus2中也引入这个jar包了)
Jboss-logging 它是关于jboss统一日志处理
如果使用关于jpa相关操作需要导入jpa依赖jar包
C3p0连接池
还需要数据库相关的驱动jar包
还需要静态日志处理
Spring框架需要的jar包
Spring最基本jar包
AOP开发
Spring jdbc
Spring  事务管理需要tx
Spring整合hibernate
Spring整合web开发
如果使用到junit测试
还需要commons-loggin jar包
创建工程完成整合前期准备
需要的配置文件:
Strtsu2框架   src/strtus.xml
Hibernate框架   src/hibernate.cfg.xml  在domain有 Xxx.hbm.xml
Spring框架   src/applicationContext.xml
关于日志   log4j.properties
关于数据库连接   db.properties
Spring整合hibernate
        基本原理:就是由spring来管理hibernate的SessionFactory
方式一:零障碍整合(了解)
        我们只需要使用spring中提供的一个LocalSessionFacotry来加载Hibernate的配置文件。
Ssh-xml工程加载到服务器后,如果可以自动创建表,就代表spring整合hibernate ok.
注意:我们必须配置spring的ContextLoaderListener
方式二(spring管理hibernate配置)
不在需要hibernate.cfg.xml文件,所有关于hibernate.cfg.xml文件中的配置都在spring的配置文件中来配置。
首先要配置数据源
接下来引入properties文件
创建LocalSessionFactoryBean来完成spring管理hibernate中的SessionFactory
上述的props可以简化成下面方案
加载hbm.xml配置文件
mappingResources它类似于我们之前<mapping resource=””>
mappingLocations它加载时是根据类路径加载 classpath:路径
mappingJarLocations它会加载jar文件中的hbm.xml文件
mappingDirectoryLocations 它加载的目录
spring整合hibernate后的DAO
spring整合hiberante后,我们的dao只需要继承HibernateDaoSupport类
在HibernateDaoSupport中只需要注入SessionFactory就可以获得到HibernateTemplate,它是对hibernate操作的一个简单封装,可以让我们方便使用原来hibernate的操作.
编写service及测试
测试
事务管理
HibernateTemplate API介绍
保存操作  session.save()
修改操作  session.update()
删除操作  session.delete()
类似于session.saveOrUpdate()根据持久化对象的状态来判断执行save或update
获取操作   get()  load()
Find操作  类似于session.createQuery().setParameter().list()
类似于hibernate中的QBC查询,完全的面向对象方案
下面这个可以执行命名查询
可以在User.hbm.xml文件中定义hql或sql
Spring整合struts2框架 前期准备 创建一个addUser.jsp页面
创建UserAction类
Struts.xml文件中配置
Spring整合struts2原理分析
1. spring整合struts2框架必须导入一个jar包
struts2-spring-plugin.jar
2. struts2框架配置文件加载顺序
a. default.properties
b. struts-default.xml
c. strtus-plugin.xml
3. 在struts2框架中所有的action interceptor  result全是bean,在struts2框架中默认是使用strtus2自己bean初化操作.
4. 当我们在工程中导入struts2-spring-plugin.jar文件
就会加载这个包下的strtus-plugin.xml
这时bean的创建由spring来管理。
5. 这时在创建Action时它执行的代码
上述代码,在执行时,首先会从spring容器中来获取,如果获取不到,会buildBean
通过上述分析,spring整合struts2框架它的方式有两种
1. spring管理action(简单说就是在applicationContext.xml文件中来声明action)
2. action自动装配service
spring整合struts2框架方式一(掌握)
这种方案是基于spring管理action
1. 在applicationContext.xml文件中配置
2. 在action类中
3. 在struts.xml文件
Class的值就是bean的id值
注意:必须在web.xml文件中配置struts2框架的Filter
Spring整合struts2框架方式二(action中自动注入service)
Struts.xml文件中
Class还是类的全名
这时就会将action类中需要的注入servcie自动注入
在default.properties中有一段配置
这时就会根据名称进行autoWires
我们可以修改注入的方式
我们在struts.xml文件中修改了注入的方式,根据type进行注入
Spring整合struts2框架总结
1. 如果在struts.xml文件中<action class=”cn.itheima.action.UserAction”>如果写的是全类名,我们使用action自动装配service方案
2. 如果在struts.xml文件中<action class=”userAction”>这时,在applicationContext.xml文件中要配置<bean id=”userAction” class=” cn.itheima.action.UserAction”>
3. 以上操作的前提是必须导入struts2-spring-plugin.xml文件
在这个文件中它改变struts2的bean工厂
4. 默认情况下如果采用action自动装配service方案,这时每一次请求都会新创建一个action,并且service的装配类型是by name
5. 如果我们采用的是spring管理action这种方案我们必须在<bean>声明中添加scope=prototype”,原因是struts2框架的action每一次请求都应该是一个新的action

猜你喜欢

转载自blog.csdn.net/qq_40208605/article/details/80811373