ssh第4章第二讲.docx

上传人:b****8 文档编号:28607625 上传时间:2023-07-19 格式:DOCX 页数:17 大小:64.44KB
下载 相关 举报
ssh第4章第二讲.docx_第1页
第1页 / 共17页
ssh第4章第二讲.docx_第2页
第2页 / 共17页
ssh第4章第二讲.docx_第3页
第3页 / 共17页
ssh第4章第二讲.docx_第4页
第4页 / 共17页
ssh第4章第二讲.docx_第5页
第5页 / 共17页
点击查看更多>>
下载资源
资源描述

ssh第4章第二讲.docx

《ssh第4章第二讲.docx》由会员分享,可在线阅读,更多相关《ssh第4章第二讲.docx(17页珍藏版)》请在冰豆网上搜索。

ssh第4章第二讲.docx

ssh第4章第二讲

重庆正大软件职业技术学院教案(项目类)

授课对象

系别

软件系

本次课学时

4学时

年级班次

大二

章节题目

第4章ssh框架整合

目的要求(含技能要求)

理解Spring的事务管理

掌握Spring框架对于O/RMapping工具Hibernate的整合方式

本节重点

掌握Spring框架对于O/RMapping工具Hibernate的整合方式

本节难点

理解Spring的事务管理

教学方法

项目教学法

教学用具

机房、屏幕广播

问题引入

通过用户注册案例,从而引出本次课程。

难点与重点讲解方法

引导、分析、讲解、实作演示

本次课小结

课程小结

教后礼记

讨论、思考题、作业(含实训作业)

完成本次课的课堂任务

填写实验报告

任务介绍(5分钟)

利用Spring框架的中间层数据访问技术将4.1节中完成的功能改造成为使用Struts+Spring+Hibernate架构实现

任务解析(50-60分钟)

1.加入工程所需jar包

2.spring与struts的整合

3.spring本身的改进

4.sping与hibernate的整合

详细步骤

1.加入工程所需jar包

请参考任务计划的相关内容引入所需的jar文件在工程指定目录中。

2.spring与struts的整合

首先,在struts配置文件中加入以下语句(只需一次):

其次,修改struts.xml,将其action里的class改写为beans.xml里对应的bean的名称或id,其关键代码如下:

--注册模块整合后-->

/login.jsp

/error.jsp

/register.jsp

相应地,在spring配置文件beans.xml中增加一个bean,关键代码如下:

3.spring本身的改进

首先,在类RegisterAction、RegisterServiceImpl中,去掉如下冗余代码:

ApplicationContextact=newClassPathXmlApplicationContext("beans.xml");

接口接口对象=(接口)act.getBean(“spring中bean的id");

RegisterServiceImpl类修改后的关键代码如下:

publicclassRegisterServiceImplimplementsRegisterService{

RegisterDaoregisterdao;

publicbooleanexecute(Useruser){

returnregisterdao.execute(user);

}

//以下省略成员变量的get/set方法

}

然后,在spring配置文件中id为registerAction的bean中嵌入property子元素,参考代码:

--配置从视图层到控制层的实现类-->

相应地,在spring配置文件中id为register的bean中嵌入property子元素,参考代码:

--配置从控制层到服务层的实现类-->

4.sping与hibernate的整合

首先,在spring中配置一个创建sessionFactory的bean,关键代码:

classpath:

hibernate.cfg.xml

该代码一个工程中只需配置一次。

然后,改进使用hibernate连接访问数据库的代码。

全部去掉在数据访问层的RegisterDaoImpl类中相关数据库操作代码并继承HibernateDaoSupport类,使用HibernateDaoSupport类的相关方法完成数据库系列操作,修改后的参考代码如下:

publicclassRegisterDaoImplextendsHibernateDaoSupportimplementsRegisterDao{

publicbooleanexecute(Useruser){

//进行入库操作

booleanret=true;

try{

this.getHibernateTemplate().save(user);

}catch(HibernateExceptione){

e.printStackTrace();

ret=false;

}

returnret;

}

}

其次,对注入sessionFactory的配置。

在id="registerdao"的bean中增加property子元素来配置用到sessionFactory的实现类:

--配置从服务层到数据处理层的实现类-->

再次,使用Spring容器创建事务,在spring配置文件中加入:

注:

该配置在同一个工程中只需配置一次。

最后,配置谁可以使用事务,在spring配置文件中加入两段话:

--第一段话:

配置哪些方法需要事务管理-->

adviceid="txAdvice"transaction-manager="transactionManager">

attributes>

methodname="add*"propagation="REQUIRED"/>

methodname="find*"propagation="REQUIRED"/>

methodname="update*"propagation="REQUIRED"/>

methodname="delete*"propagation="REQUIRED"/>

methodname="*"read-only="true"/>

attributes>

advice>

--第二段话:

配置哪些类需要事务管理-->

config>

pointcutid="allServiceMethod"expression="execution(*com.zdsoft.dao.*.*(..))"/>

advisorpointcut-ref="allServiceMethod"advice-ref="txAdvice"/>

config>

注:

该配置在同一个工程中只需配置一次。

根据任务提出问题(45-55分钟)

●如何将三个框架整合?

问题解析(45-55分钟)

1.如何将三个框架整合?

我们以例子4.2-1来说明。

【例子4.2-1】用户信息增加,制作用户注册界面,录入用户id和用户名之后提交到数据库中,提交成功显示成功页面,提交失败显示失败页面。

要求使用ssh整合框架实现。

.如图4.2-1a、4.2-1b、4.2-1c所示分别表示操作页面、成功页面、失败页面页面。

图4.2-1a操作页面

图4.2-1b成功页面

图4.2-1c失败页面

步骤0:

整合前的代码编写。

编写前台页面。

操作页面userinfo.jsp参考代码:

用户注册


formname="f1"method="post"action="userinfoadd">

*用户id:

textfieldname="userinfo.id">

textfield>

*用 户 名:

textfieldname="userinfo.name"/>

form>

成功页面userinfo_succ.jsp参考代码:

注册成功:

点击返回

失败页面userinfo_err.jsp参考代码:

操作失败~

请点击

history.back();">返回重新操作!

编写持久(domain)层。

编写用户实体类Userinfo,参考代码:

publicclassUserinfo{

privateStringid;

privateStringname;

/**以下省略成员属性的get/set方法*/

}

编写实体类映射文件Userinfo.hbm.xml,参考代码:

length="20">

length="50"not-null="true"/>

将实体类映射文件Userinfo.hbm.xml注册到hibernate全局配置文件中,参考代码:

编写action层。

编写业务控制类UserinfoAction,关键代码如下:

publicclassUserinfoAction{

Userinfouserinfo;

UserinfoServiceuserinfoService;

publicStringexecute(){

//增加

booleanret;

ApplicationContextact=newClassPathXmlApplicationContext("beans.xml");

//获得服务对象

userinfoService=(UserinfoService)act.getBean("userinfoService");

ret=userinfoService.addUserinfo(userinfo);

if(ret){

return"success";

}else{

return"error";

}

}

//以下省略成员变量的get/set方法

}

编写struts配置文件,增加一个action,参考代码:

/userinfo_succ.jsp

/userinfo.jsp

/userinfo_err.jsp

编写spring配置文件,配置action层到service层所需的实现类的bean,参考代码:

--配置从控制层到服务层的实现类-->

编写service层。

编写接口UserinfoService,关键代码:

publicinterfaceUserinfoService{

publicbooleanaddUserinfo(Userinfouserinfo);

}

编写接口UserinfoService的实现类UserinfoServiceImpl,关键代码:

publicclassUserinfoServiceImplimplementsUserinfoService{

UserinfoDaouserinfoDao;

publicbooleanaddUserinfo(Userinfouserinfo){

ApplicationContextact=newClassPathXmlApplicationContext("beans.xml");

//获得服务对象

userinfoDao=(UserinfoDao)act.getBean("userinfoDao");

returnuserinfoDao.addUserinfo(userinfo);

}

//以下省略get/set方法

}

编写spring配置文件,配置service层到dao层所需的实现类bean,参考代码:

--配置从服务层到数据处理层的实现类-->

编写dao层。

编写接口UserinfoDao,参考代码:

publicinterfaceUserinfoDao{

publicbooleanaddUserinfo(Userinfouserinfo);

}

编写接口实现类,参考代码:

publicclassUserinfoDaoImplimplementsUserinfoDao{

SessionFactorysessionFactory;

publicbooleanaddUserinfo(Userinfouserinfo){

SessionFactorysessionFactory=newAnnotationConfiguration().configure().buildSessionFactory();

try{

Sessionsession=sessionFactory.getCurrentSession();

session.persist(userinfo);

returntrue;

}catch(Exceptione){

e.printStackTrace();

returnfalse;

}

}

}

步骤1:

struts与spring框架整合

首先,在struts配置文件中加入以下语句(只需一次):

说明:

struts中的Action创建交给spring完成。

其次,修改struts配置文件中action的class属性配置,代码语法:

本例关键代码:

最后,对应修改spring配置文件,增加一个bean,代码语法:

本例关键代码:

步骤2:

改进spring框架单独使用中的冗余代码

在需要依赖注入的地方(action层调用service接口、service层调用dao层接口)存在类似如下代码:

ApplicationContextact=newClassPathXmlApplicationContext("beans.xml");

接口接口对象=(接口)act.getBean(“spring中bean的id");

现在改进:

在与struts框架整合后,现在可以删除。

删除代码的代价:

需要在spring中进行配置。

在配置action层实现类的bean中:

嵌入property子元素,语法为:

目的:

注入bean对象后,根据需要,给对象中的成员变量也注入对象,本例代码:

--配置从视图层到控制层的实现类-->

其中property元素的name属性值userinfoService是UserinfoAction类中需要注入的成员变量,同理可得:

在配置服务层的实现类的bean中增加property子元素来配置用到dao层接口的实现类的关键代码:

--配置从控制层到服务层的实现类-->

其中property节点的name属性值userinfoDao是UserinfoServiceImpl类中需要注入的成员变量。

步骤3:

Spring与hibernate框架整合。

首先,在spring中配置一个创建sessionFactory的bean,关键代码:

classpath:

hibernate.cfg.xml

配置目的:

在Spring中集成hibernate,通过spring加载hibernate配置并使用LocalSessionFactoryBean创建sessionFactory。

代码说明:

bean的id名字可以随便取,约定俗成为sessionFactory;classpath:

hibernate.cfg.xml是hibernate全局配置文件的地址;

本例是使用非注解方式生成sessionFactory,若是注解方式,则class属性中LocalSessionFactoryBean要改为AnnotationSessionFactoryBean,让UserinfoDaoImpl类继承HibernateDaoSupport类。

然后,改进使用hibernate连接访问数据库的代码。

全部去掉在数据访问层的UserinfoDaoImpl类中相关数据库操作代码如下:

SessionFactorysessionFactory=newConfiguration().configure().buildSessionFactory();

Sessionsession=sessionFactory.openSession();

session.beginTransaction();

session.persist(user);

session.getTransaction().commit();

session.clo

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 法学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1