1.Spring与Struts2、Hibernate 整合
1)SSH工作流程
a.启动服务器,加载工程以及web.xml.
(实例化Lisener,Filter等组件,将Spring容器和Struts2控制创建)
b.客户端发送请求,所有请求进入Struts2控制器。控制器根据请求类型不同,分别处理。
(action请求,*.action会进入struts.xml寻找<action>配置.
其他请求,*.jsp会直接调用请求资源,生成响应信息)
c.Struts2控制器根据<action>配置调用一个Action对象处理。
--------------整合方法一:将Action交给Spring容器-----------------------
(Action对象由struts2-spring-plugin.jar插件提供的 StrutsSpringObjectFactory负责去Spring容器获取)
******整合方法二:将Action置于Spring容器之外*******
(Action对象由struts2-spring-plugin.jar插件提供的 StrutsSpringObjectFactory负责创建,然后到Spring容器中寻找与Action
属性匹配的Bean对象,给Action对象注入。(默认采用名称匹配规则)
d.Struts2控制器执行defaultStack拦截器、Action对象、Result等组件处理.
e.执行Action的execute业务方法时,如果使用Service或DAO采用Spring的IoC机制调用。
f.执行Result生成响应信息,执行后续拦截器处理
g.将响应信息输出。
出错检查环节:
web.xml--->jsp请求--->struts.xml--->struts2-spring-plugin.jar-->
applicationContext.xml
检查web.xml:ContextLoadLisener,StrutsFilter是否配置正确
检查jsp请求:请求类型和请求路径是否正确
检查struts.xml:检查<action>配置格式是否正确
检查plugin.jar:检查struts2-spring-plugin.jar是否存在
检查applicationContext.xml:检查Action、Service、DAO等配置及其注入关联配置。
===============ssh开发步骤===================
1)引入开发包(可以引入服务器day04上的ssh_jar开发包)
----Struts开发包
----Hibernate开发包
----Spring开发包
----dbcp连接池开发包
----mySQL驱动开发包
----其他插件struts2-spring-plugin.jar,struts-json-plugin.jar(可选)
2)编写实体类和映射文件hbm.xml(可以利用MyEclipse工具)
3)编写DAO组件
根据需求编写DAO接口定义
之后利用Spring提供Template实现DAO.
将DAO实现类继承HibernateDaoSupport,使用HibernateTemplate完成操作。
4)在Spring配置文件中定义DAO,SessionFactory,DataSource。按以下关系注入。
DataSource---->SessionFactory----->DAO
------------------测试DAO组件-------------------
成功:表明Spring和Hibernate整合正确.
容易出错点:hbm.xml和applicationContext.xml配置
5)添加Struts2配置文件及控制器配置
src/struts.xml,修改web.xml定义
6)编写Action组件,需要使用Service或DAO时,采用名称匹配规则注入
7)在struts.xml中添加Action组件配置
8)修改jsp,利用struts2标签完成显示
9)修改web.xml,添加Listener配置,实例化Spring容器
10)按ssh-1图示检查一下流程。
-------------------通过界面测试--------------------
成功:表明Spring和Struts2整合正确.
容易出错点:web.xml,struts.xml。Action使用DAO时,注意变量名称。
==============Spring事务管理===============
*1)声明式事务管理
a.定义一个事务管理组件,充当方面组件。
---如果采用JDBC访问数据库,使用Spring提供的org.springframework.jdbc.datasource.DataSourceTransactionManager
需要注入DataSource对象
---如果采用Hibernate访问数据库,使用Spring提供的
org.springframework.orm.hibernate3.HibernateTransactionManager
需要注入SessionFactory对象
b.定义一个事务通知(指定方面组件+环绕通知)
<tx:advice id="通知名" transaction-manager="事务管理组件">
<tx:attributes>
<!--可以为不同目标方法定义不同的事务管理-->
<tx:method name="create*" propagation="REQUIRED"/>
<tx:method name="find*" read-only="true"/>
</tx:attributes>
</tx:advice>
c.定义AOP配置,将事务通知和目标对象结合
<aop:config>
<!--用于指定目标对象-->
<aop:pointcut id="切入点名" expression="切入点表达式"/>
<!--将advice和pointcut结合-->
<aop:advisor advice-ref="通知名" pointcut-ref="切入点名"/>
</aop:config>
2)编程式事务管理(了解)
transactionTemplate.execute(
new TransactionCallback() {
protected Object doInTransaction(TransactionStatus status) {
updateOperation1();
return updateOperation2();
}
});
=============可以将Spring配置进行拆分===========
spring-base.xml //配置datasource和sessionfactory
spring-dao.xml //配置DAO
spring-service.xml //配置Service
spring-transaction.xml//配置AOP事务管理
注意:不要在多个xml中定义同一个Bean组件,那样算重复定义。
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:spring-*.xml</param-value>
</context-param>
===============================================
Spring中常用事务类型:
REQUIRED--支持当前事务,如果当前没有事务,就新建一个事务。这是最常见的选择。
SUPPORTS--支持当前事务,如果当前没有事务,就以非事务方式执行
MANDATORY--支持当前事务,如果当前没有事务,就抛出异常。
REQUIRES_NEW--新建事务,如果当前存在事务,把当前事务挂起。
NOT_SUPPORTED--以非事务方式执行操作,如果当前存在事务,就把当前事务挂起。
NEVER--以非事务方式执行,如果当前存在事务,则抛出异常。
NESTED--如果当前存在事务,则在嵌套事务内执行。如果当前没有事务,则进行与REQUIRED类似的操作。
拥有多个可以回滚的保存点,内部回滚不会对外部事务产生影响。只对DataSourceTransactionManager有效
=========SSH练习===========
1、参考文档步骤完成当当网左侧类别显示
2、做完的可以做一下最新上架图书显示
3、为前面示例添加声明式事务管理
没有合适的资源?快使用搜索试试~ 我知道了~
ssh.zip_javascript
共378个文件
gif:219个
jpg:68个
css:15个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 163 浏览量
2022-09-21
17:43:56
上传
评论
收藏 1.02MB ZIP 举报
温馨提示
整合了struts2,hibernate,spring三大架构
资源推荐
资源详情
资源评论
收起资源包目录
ssh.zip_javascript (378个子文件)
Order.class 3KB
Category.class 2KB
OrderServiceImpl.class 2KB
Item.class 2KB
TestCategoryDAO.class 2KB
HibernateCategoryDAO.class 1KB
CategoryAction.class 1KB
HibernateOrderDAO.class 722B
HibernateItemDAO.class 715B
CreateOrderAction.class 673B
CategoryDAO.class 229B
OrderDAO.class 150B
OrderService.class 148B
ItemDAO.class 147B
.classpath 3KB
book.css 25KB
second.css 20KB
register_login.css 14KB
book_head090107.css 13KB
login.css 13KB
list.css 10KB
shopping_vehicle.css 9KB
shopping_head.css 5KB
booksaleslist.css 5KB
page_bottom.css 3KB
public_footer.css 2KB
research.css 2KB
secBook_Show.css 1KB
navi.css 1KB
pubsug090107.css 555B
Thumbs.db 48KB
Thumbs.db 38KB
Thumbs.db 29KB
Thumbs.db 19KB
Thumbs.db 16KB
Thumbs.db 10KB
Thumbs.db 8KB
Thumbs.db 7KB
Thumbs.db 6KB
Thumbs.db 6KB
Thumbs.db 6KB
Thumbs.db 5KB
ancz081216_button05.gif 25KB
xssj_banner.gif 8KB
d_introduce.gif 5KB
cheap4.gif 4KB
cheap3.gif 4KB
cheap2.gif 4KB
cheap1.gif 3KB
logo.gif 3KB
logo.gif 3KB
window_loading.gif 2KB
book_logo.gif 2KB
back_window.gif 2KB
title_bg.gif 2KB
pic_myshopping.gif 2KB
butt_balance.gif 2KB
ddb_1.gif 2KB
label3.gif 1KB
book_dangdang.gif 1KB
bang.gif 1KB
ddb_2.gif 1KB
r-r3new.gif 1KB
validate.gif 1KB
validate.gif 1KB
dot_sale.gif 1KB
dot_shanggan.gif 1KB
dot_gandong.gif 1024B
dot_shuzhuopang.gif 1023B
butt_buy.gif 1022B
dot_kafeiguan.gif 1018B
tag_bang1.gif 1012B
xs.gif 995B
ddfyb_3.gif 980B
ddfyb_4.gif 977B
icon_book_mess.gif 901B
icon_shijian_r.gif 897B
icon_zhekou_r2.gif 896B
icon_chuban_r.gif 892B
icon_jiaqian.gif 889B
icon_jiaqian_r.gif 889B
icon_shijian2.gif 888B
icon_zhekou_r.gif 888B
icon_shijian_r2.gif 888B
icon_zhekou.gif 888B
icon_chuban_r2.gif 884B
icon_chuban2.gif 884B
icon_jiaqian_r2.gif 881B
bg_book.gif 851B
login_bj1.gif 787B
button.gif 768B
tag_bang2.gif 751B
n_bg.gif 748B
icon_star.gif 742B
second_butt_g_2.gif 723B
button_s.gif 718B
search_kuang.gif 715B
right_h2_bg.gif 686B
r-r1.gif 678B
OK.gif 677B
共 378 条
- 1
- 2
- 3
- 4
资源评论
刘良运
- 粉丝: 68
- 资源: 1万+
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功