一章StrutsHibernateSpring.ppt

上传人:sccc 文档编号:5631846 上传时间:2023-08-04 格式:PPT 页数:59 大小:1.65MB
返回 下载 相关 举报
一章StrutsHibernateSpring.ppt_第1页
第1页 / 共59页
一章StrutsHibernateSpring.ppt_第2页
第2页 / 共59页
一章StrutsHibernateSpring.ppt_第3页
第3页 / 共59页
一章StrutsHibernateSpring.ppt_第4页
第4页 / 共59页
一章StrutsHibernateSpring.ppt_第5页
第5页 / 共59页
点击查看更多>>
资源描述

《一章StrutsHibernateSpring.ppt》由会员分享,可在线阅读,更多相关《一章StrutsHibernateSpring.ppt(59页珍藏版)》请在三一办公上搜索。

1、第17章 Struts 2、Hibernate、Spring的整合应用实例,17.1 Spring与Struts 2的整合,17.2 Spring与Hibernate整合,17.3 Struts 2、Hibernate与Spring的整合,17.1 Spring与Struts 2的整合,首先,创建Web项目,命名为Spring_Struts。添加Struts 2所需的5个类库:struts 2-core-2.0.14.jar,xwork-2.0.4.jar,ognl-2.6.11.ar,common-logging-1.0.4.jar,freemarker-2.3.8.jar。然后修改web.

2、xml,代码如下:struts2 org.apache.struts2.dispatcher.FilterDispatcher struts2/*,17.1 Spring与Struts 2的整合,接着创建login.jsp登录页面,该页面非常简单,代码如下:登录界面,17.1 Spring与Struts 2的整合,创建Action类LoginAction.java代码。配置struts.xml文件,代码如下:/login_success.jsp,17.1 Spring与Struts 2的整合,创建login_success.jsp,代码如下:您好!欢迎您登录成功,17.1 Spring与Str

3、uts 2的整合,部署运行项目,测试Struts 2是否正常运行,在浏览器中输入“http:/localhost:8080/Spring_Struts/login.jsp”,在登录框和密码框中输入任意值,单击“登录”按钮,转向登录成功界面,并输出登录名。到此为止,我们仅开发了一个Struts 2的程序,下面介绍如何将Spring融入到项目中。首先,添加Spring框架所需的类库,这里要添加Spring的类库“Spring 2.5 Core Libraries”及“Spring 2.5 Web Libraries”,同时要添加Spring支持的Jar包struts2-spring-plugin.

4、jar。该包位于Struts 2的lib文件夹下,该Jar文件用于支持Spring与Struts 2的整合。在WEB-INF下创建Spring的核心配置文件applicationContext.xml,代码如下:./这里将配置Bean,17.1 Spring与Struts 2的整合,修改web.xml内容,使得项目增加对Spring的支持,代码修改。在项目的src下创建文件struts.properties,编辑代码内容如下:struts.objectFactory=spring上述代码表示Struts 2的对象的生成交由Spring来完成,修改applicationContext.xml,代

5、码如下:,17.1 Spring与Struts 2的整合,完成以后,修改struts.xml如下:/login_success.jsp,17.2 Spring与Hibernate整合,1创建项目首先,创建Web项目,命名为“Spring_Hibernate”。2添加Spring的开发能力在MyEclipse中有对Spring框架的支持,右击项目名,依次选择“MyEclipse”“Add Spring Capabilities”,出现如图17.1所示的对话框,选中要应用的Spring的版本及所需的类库文件。,注意,本书用的Spring版本为Spring 2.5,选择Spring的类库Spring

6、 2.5 Core Libraries、Spring 2.5 Web Labraries、Spring 2.5 AOP Libraries、Spring 2.5 Persistence Core Libraries和Spring 2.5 Persistence JDBC Libraries。,图17.1 添加Spring Capabilities,17.2 Spring与Hibernate整合,单击“Next”按钮,提示是否建立Spring配置文件,在默认情况下选择application Context.xml文件的存放路径,选择在WEB-INF文件夹下,如图17.2所示,然后单击“Finis

7、h”按钮,完成Spring框架的添加。,图17.2 创建applicationContext.xml文件,17.2 Spring与Hibernate整合,3添加Hibernate框架MyEclipse也有对Hibernate框架的支持,右击项目名,依次选择“MyEclipse”“Add Hibernate Capabilities”菜单项,出现如图17.3所示的对话框,选择Hibernate版本及需要的类库。,图17.3 添加Hibernate库,17.2 Spring与Hibernate整合,单击“Next”按钮,出现如图17.4所示的对话框,提示是用Hibernate的配置文件还是用Spr

8、ing的配置文件进行SessionFactory的配置,选择使用Spring来对Hibernate进行管理。这样,最后生成的工程中就不包含hibernate.cfg.xml,可以用Spring来对数据源及SessionFactory进行依赖注入。,用Spring对Hibernate的数据源及SessionFactory进行管理,图17.4 定义Hibernate配置,17.2 Spring与Hibernate整合,单击“Next”按钮,出现如图17.5所示的对话框,提示是否创建一个新的Hibernate配置文件或是使用已有的配置文件。,使用已经存在的Spring配置文件,为SessionFac

9、tory的ID起名,图17.5 定义Spring-Hibernate配置,17.2 Spring与Hibernate整合,单击“Next”按钮,出现要求选择数据库连接信息的对话框。这里选择前面创建的“MBOOKCONN”,在Bean Id中填写“datasource”数据源的Bean名称。在DB Driver中选择“MBOOKCONN”,下面的输入栏会自动填充,出现如图17.6所示的对话框。,为DataSource ID起名,图17.6 指定新的Spring数据源连接信息,17.2 Spring与Hibernate整合,单击“Next”按钮,出现如图17.7所示的对话框,提示是否创建Sessi

10、onFactory类,由于本程序是由Spring注入sessionFactory,所以不用创建,单击“Finish”按钮。,图17.7 定义SessionFactory属性,17.2 Spring与Hibernate整合,生成与数据库表对应的POJO类和对应的映射文件。打开MyEclipse的Database Explorer perspective,打开“MBOOKCONN”,依次选择“MBOOK”“dbo”“TABLE”展开数据库表,本项目选择对“book”表的增、删、改、查操作来讲解Spring与Hibernate的整合,故只需生成“book”表的POJO类及对应的映射文件。右击该表名,

11、选择“Hibernate Reverse Engineering”菜单项,出现如图17.8所示的界面,选择要生成的文件及文件存放的包。,图17.8 Hibernate映射文件和POJO类,17.2 Spring与Hibernate整合,查看项目的目录结构,在org.vo包中,出现了“Book.java”,代码为。还有一个映射文件Book.hbm.xml,代码为。在src文件夹下建立包org.dao,在该包下建立接口,命名为“BookDao”,代码如下:package org.dao;import org.vo.Book;public interface BookDao public void

12、save(Book book);public void delete(String ISBN);public void update(Book book);public Book select(String ISBN);,17.2 Spring与Hibernate整合,在src文件夹下建立包org.dao.impl,在该包下建立类,命名为“BookDaoImpl”,代码。修改Spring配置文件applicationContext.xml,将关系映射注册在该文件中,并依赖注入DAO。代码修改。,17.2 Spring与Hibernate整合,4测试结果准备工作完成后,就可以编写测试类对其进行测

13、试了。在src文件夹下建立包test,在该包下建立类Test,代码。运行该测试类后,查看控制台信息,如图17.9所示。,图17.9 控制台输出结果,17.3 Struts 2、Hibernate与Spring的整合,17.3.1 项目创建首先,创建一个Web工程,命名为“Struts2_Hibernate_Spring”,然后修改web.xml文件,代码修改为。,17.3.2 添加项目开发所需的JARs,在添加项目开发所需的JARs前,首先介绍如何在MyEclipse中自定义User Labraries。右击项目名,依次选择“Build Path”“Configure Build Path”,

14、出现如图17.10所示的对话框,然后单击“Add Library”按钮,出现如图17.11所示的对话框。,图17.10 Properties for Struts 2_Hibernate_Spring对话框 图17.11 Add Library对话框,17.3.2 添加项目开发所需的JARs,选中“User Library”后,单击“Next”按钮,出现如图17.12所示的对话框。,图17.12 用户定义Library对话框,17.3.2 添加项目开发所需的JARs,单击“User Libraries”按钮,出现如图17.13所示的对话框。,图17.13 添加User Libraries对话框

15、,17.3.2 添加项目开发所需的JARs,单击“New”按钮,出现如图17.14所示的对话框。命名后单击“OK”按钮,就会在图17.13中多出刚才自定义的Library,但是该Library中还没有任何的Jar包,所以要为该Library添加Jar包。选中hibernate 3,即刚创建的Library,单击“Add JARs”按钮,找到要添加的Jar包路径,选中这些Jar包后,单击“OK”按钮,就为该Library添加了Jar包。,图17.14“Edit User Library”对话框,17.3.2 添加项目开发所需的JARs,现在可以为项目添加开发类库了。选择“MyEclipse”“A

16、dd Spring Capabilities”,出现选择版本及类库的对话框,如图17.15所示。选择“User Libraries”选项,也就是用户自定义的Libraries,这里的“User Libraries”包括了项目开发用到的所有的JARs,所以在后面为项目添加Hibernate开发能力时,可以不添加任何Jar包。,图17.15 Spring选择类库,17.3.3 实现Hibernate持久层,添加Hibernate的开发框架,右击项目名,依次选择“MyEclipse”“Add Hibernate Capabilities”。前面说过,在添加Spring开发能力时,已经把所需的JARs

17、全部添加进去,所以这里不用再添加Hibernate类库,故在选择Hibernate类库时,无须选择任何类库,单击“Next”按钮即可,添加Hibernate框架、Hibernate的反向工程及文件修改与17.2节中的第3步相同,读者可以自行操作,这里就不再列举了。,17.3.4 编写DAO接口及实现类,“登录”的DAO接口LoginDao.java代码为:package org.dao;import org.vo.Login;public interface LoginDao/查询信息 public Login checkLogin(String name,String password);,

18、17.3.4 编写DAO接口及实现类,LoginDao的实现类LoginDaoImpl.java代码为:package org.dao.impl;import java.util.List;import org.dao.LoginDao;import org.springframework.orm.hibernate3.support.HibernateDaoSupport;import org.vo.Login;public class LoginDaoImpl extends HibernateDaoSupport implements LoginDao public Login chec

19、kLogin(String username,String password)Stringstr=username,password;List list=this.getHibernateTemplate().find(from Login where name=?and password=?,str);Login login=null;if(list.size()0)login=(Login)list.get(0);return login;,17.3.4 编写DAO接口及实现类,“图书”的DAO接口BookDao.java代码为:package org.dao;import org.vo.

20、Book;public interface BookDao/保存图书信息 public void addBook(Book book);/删除图书信息 public void deleteBook(String ISBN);/修改图书信息 public void updateBook(Book book);/查询图书信息 public Book selectBook(String ISBN);,17.3.4 编写DAO接口及实现类,BookDao的实现类BookDaoImpl.java的代码为。“读者”的DAO接口StudentDao.java代码为:package org.dao;impor

21、t org.vo.Student;public interface StudentDao public Student selectStudent(String readerId);/查询读者信息,17.3.4 编写DAO接口及实现类,StudentDao接口的实现类StudentDaoImpl.java代码为:package org.dao.impl;import java.util.List;import org.dao.StudentDao;import org.springframework.orm.hibernate3.support.HibernateDaoSupport;impo

22、rt org.vo.Student;public class StudentDaoImpl extends HibernateDaoSupport implements StudentDao public Student selectStudent(String readerId)List list=this.getHibernateTemplate().find(from Student where readerId=?,readerId);Student student=null;if(list.size()0)student=(Student)list.get(0);return stu

23、dent;,17.3.4 编写DAO接口及实现类,“借书”接口LendDao.java的代码为:package org.dao;import java.util.List;import org.vo.Book;import org.vo.Lend;import org.vo.Student;public interface LendDao/分页查询指定借书证号的读者所借图书的信息 public List selectBook(String readerId,int pageNow,int pageSize);/查询指定借书证号的读者所借图书的总数 public int selectBookSi

24、ze(String readerId);/借书 public void addLend(Lend lend,Book book,Student student);/根据图书ID查询Lend信息 public Lend selectByBookId(String bookId);/根据图书ISBN查询Lend信息 public Lend selectByBookISBN(String ISBN);,LendDao接口的实现类LendDaoImpl.java代码为。,17.3.5 编写业务逻辑接口及实现类,“登录”的业务逻辑接口LoginService.java为:package org.serv

25、ice;import org.vo.Login;public interface LoginService public Login checkLogin(String username,String password);,17.3.5 编写业务逻辑接口及实现类,LoginService的实现类LoginServiceImpl.java为:package org.service.impl;import org.dao.LoginDao;import org.service.LoginService;import org.vo.Login;public class LoginServiceImp

26、l implements LoginService private LoginDao loginDao;public Login checkLogin(String username,String password)return loginDao.checkLogin(username,password);public LoginDao getLoginDao()return loginDao;public void setLoginDao(LoginDao loginDao)this.loginDao=loginDao;,17.3.5 编写业务逻辑接口及实现类,“图书”的业务逻辑接口Book

27、Service.java为:package org.service;import java.util.List;import org.vo.Book;public interface BookService/查询图书信息 public Book selectBook(String ISBN);/添加图书 public void addBook(Book book);/删除图书 public void deleteBook(String ISBN);/修改图书 public void updateBook(Book book);BookService.java的实现类BookServiceImp

28、l.java为。,17.3.5 编写业务逻辑接口及实现类,“读者”的业务逻辑接口StudentService.java为:package org.service;import org.vo.Student;public interface StudentService/查 public Student selectStudent(String readerId);,17.3.5 编写业务逻辑接口及实现类,StudentService.java的实现类StudentServiceImpl.java为:package org.service.impl;import org.dao.StudentD

29、ao;import org.service.StudentService;import org.vo.Student;public class StudentServiceImpl implements StudentService private StudentDao studentDao;public Student selectStudent(String readerId)return studentDao.selectStudent(readerId);public StudentDao getStudentDao()return studentDao;public void set

30、StudentDao(StudentDao studentDao)this.studentDao=studentDao;,17.3.5 编写业务逻辑接口及实现类,“借书”的业务逻辑接口LendService.java为:package org.service;import java.util.List;import org.vo.Book;import org.vo.Lend;import org.vo.Student;public interface LendService public List selectBook(String readerId,int pageNow,int page

31、Size);public int selectBookSize(String readerId);public void addLend(Lend lend,Book book,Student student);public Lend selectByBookId(String bookId);public Lend selectByBookISBN(String ISBN);LendService.java的实现类LendServiceImpl.java为。,17.3.5 编写业务逻辑接口及实现类,完成了DAO及业务逻辑的编写后,需要在Spring的配置文件中进行依赖注入,以便于应用,故Sp

32、ring的配置文件applicationContext.xml文件修改为。完成了对DAO及业务逻辑的注入后,还需要在该配置文件中配置事务支持,所以在配置文件中加入下面的Bean配置。,17.3.6“登录”功能的实现,在实现功能之前,先做一些简单的准备工作,先创建Struts 2的配置文件struts.xml文件,编写代码如下:./这里后面将添加action配置 还有就是Struts 2与Spring之间整合所需的struts.properties文件:struts.objectFactory=spring,17.3.6“登录”功能的实现,“登录”功能的页面如图17.16所示,页面的代码见12.

33、3节中所讲的“index.jsp”代码。,图17.16 系统主界面(包含登录),17.3.6“登录”功能的实现,在head.jsp中登录功能的部分代码如下:提交到了“login.action”,在struts.xml文件中action配置为:/index.jsp/index.jsp,17.3.6“登录”功能的实现,Action类LoginAction.java实现为。在Spring配置文件中对LoginAction进行依赖注入:,17.3.7“查询已借图书”功能的实现,要“查询已借图书”,首先要进入到“借书”功能的页面,如图17.17所示,界面实现的代码见第12章的12.3.2节的“lend.

34、jsp”。,图17.17 借书的主界面,17.3.7“查询已借图书”功能的实现,在输入借书证号后,单击“查询”按钮,查询出该读者的所有借书信息,如输入“081101”,出现如图17.18所示的界面。,图17.18 查询已借图书页面,17.3.7“查询已借图书”功能的实现,该功能的页面提交借书证号代码为:内容选择 借书证号:,17.3.7“查询已借图书”功能的实现,提交到了“selectBook.action”,相应地在struts.xml中的配置为:/lend.jspLendAction.java中实现的方法代码为。在Spring配置文件中对LendAction进行依赖注入:,17.3.8“借

35、书”功能的实现,在某读者查询过已借的图书信息后,就可以继续借书了,输入正确的ISBN及图书ID后,单击“借书”按钮,可以完成借书,如图17.19所示。,图17.19 借书成功页面,17.3.8“借书”功能的实现,借书功能的页面代码为。这里做了一个判断,前面也已经讲解,就是若“readerId”没有值就让输入框不可编辑,这是因为如果没有“readerId”就不知道谁要借书了。当输入了借书证号查询后,此时“readerId”就被传递到页面中,输入图书的ISBN及图书ID,单击“借书”按钮,请求提交到“lendBook.action”,struts.xml中相应地配置为:/lend.jsp在Lend

36、Action.java中的方法实现为。,17.3.9“图书管理”功能的实现,图书管理界面如图17.20所示,页面实现代码与第12章12.3.4节中的“bookmanage.Jsp”相同。,图17.20 图书管理界面,17.3.9“图书管理”功能的实现,在“bookmanage.jsp”页面中,该界面实现了图书的增、删、改、查功能,在逐一介绍之前,先回顾一下该表单的内容:功能选择./这里是要提交的表单输入框部分.,17.3.9“图书管理”功能的实现,1图书追加图书追加是向数据库中添加数据,页面的提交代码为:在提交标签中定义了“method”属性,指定了该请求应用的Action类中的方法为“add

37、Book”,故当4个按钮都提交给“book.action”时,在指定的Action类中就可以找到相应的方法进行处理。struts.xml中的配置为:/bookmanage.jsp/bookmanage.jsp*addBook,updateBook,17.3.9“图书管理”功能的实现,BookActon.java中相应的处理方法为。在Spring的配置文件中对BookAction进行依赖注入:,17.3.9“图书管理”功能的实现,2.图书删除因为图书删除也是提交给了“book.action”,而且在提交标签中定义了使用的方法:所以,直接在BookAction.java中编写方法即可:public

38、 String deleteBook()throws Exception if(book.getISBN()=null|book.getISBN().equals()this.setMessage(请输入ISBN号);return SUCCESS;else if(bookservice.selectBook(book.getISBN()=null)this.setMessage(您输入的ISBN号不存在);return SUCCESS;else if(lendservice.selectByBookISBN(book.getISBN()!=null)this.setMessage(该图书已经被

39、借出,故不能删除图书信息!);return SUCCESS;bookservice.deleteBook(book.getISBN();this.setMessage(删除成功!);return SUCCESS;,17.3.9“图书管理”功能的实现,3图书查询同样,图书查询也是提交到了“book.action”,提交标签中定义为:对应BookAction.java中的方法为:public String selectBook()throws Exception if(book.getISBN()=null|book.getISBN().equals()this.setMessage(请输入ISB

40、N);return SUCCESS;Book b=bookservice.selectBook(book.getISBN();if(b=null)this.setMessage(不存在的ISBN号);return SUCCESS;Map request=(Map)ActionContext.getContext().get(request);request.put(onebook,b);return SUCCESS;,17.3.9“图书管理”功能的实现,同时,在查询时要对照片进行处理,将下面的代码配置在struts.xml文件中:*addBook,updateBook,17.3.9“图书管理”

41、功能的实现,当然,由于查询中要读取照片,所以在BookAction中还要定义读取照片的“getImage”方法:public String getImage()throws Exception HttpServletResponse response=ServletActionContext.getResponse();String ISBN=book.getISBN();book.setISBN(null);Book b=bookservice.selectBook(ISBN);byte photo=b.getPhoto();response.setContentType(image/jpe

42、g);ServletOutputStream os=response.getOutputStream();if(photo!=null,17.3.9“图书管理”功能的实现,4图书修改图书修改其实和图书添加差不多,区别在于图书修改一般要先根据ISBN查询出对应的图书信息,然后在其基础上进行修该,提交按钮的代码为:对应的BookAction.java中的方法为。在图书添加及图书修改时,为了防止提交空数据,故应用了验证框架对其进行验证,“BookAction-validation.xml”文件为。,17.3.9“图书管理”功能的实现,当配置了该验证框架后,所有的BookAction中的应用方法都会通过该验证框架进行验证,但是在图书删除及图书查询时,并不需要所有的验证,所有我们在Action的后面加上了一个拦截器栈:*addBook,updateBook,

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

当前位置:首页 > 建筑/施工/环境 > 农业报告


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号