一章StrutsHibernateSpring

上传人:沈*** 文档编号:174467331 上传时间:2022-12-15 格式:PPT 页数:59 大小:1.21MB
收藏 版权申诉 举报 下载
一章StrutsHibernateSpring_第1页
第1页 / 共59页
一章StrutsHibernateSpring_第2页
第2页 / 共59页
一章StrutsHibernateSpring_第3页
第3页 / 共59页
资源描述:

《一章StrutsHibernateSpring》由会员分享,可在线阅读,更多相关《一章StrutsHibernateSpring(59页珍藏版)》请在装配图网上搜索。

1、Java EE实用教程第第17章章 Struts 2、Hibernate、Spring的整合应用实例的整合应用实例17.1 Spring与与Struts 2的整合的整合17.2 Spring与与Hibernate整合整合17.3 Struts 2、Hibernate与与Spring的整合的整合Java EE实用教程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-loggin

2、g-1.0.4.jar,freemarker-2.3.8.jar。然后修改web.xml,代码如下:struts2 org.apache.struts2.dispatcher.FilterDispatcher struts2 /*Java EE实用教程17.1 Spring与与Struts 2的整合的整合接着创建login.jsp登录页面,该页面非常简单,代码如下:登录界面 Java EE实用教程17.1 Spring与与Struts 2的整合的整合创建Action类LoginAction.java代码。配置struts.xml文件,代码如下:/login_success.jsp Java E

3、E实用教程17.1 Spring与与Struts 2的整合的整合创建login_success.jsp,代码如下:您好!欢迎您登录成功 Java EE实用教程17.1 Spring与与Struts 2的整合的整合部署运行项目,测试Struts 2是否正常运行,在浏览器中输入“http:/localhost:8080/Spring_Struts/login.jsp”,在登录框和密码框中输入任意值,单击“登录”按钮,转向登录成功界面,并输出登录名。到此为止,我们仅开发了一个Struts 2的程序,下面介绍如何将Spring融入到项目中。首先,添加Spring框架所需的类库,这里要添加Spring的

4、类库“Spring 2.5 Core Libraries”及“Spring 2.5 Web Libraries”,同时要添加Spring支持的Jar包struts2-spring-plugin.jar。该包位于Struts 2的lib文件夹下,该Jar文件用于支持Spring与Struts 2的整合。在WEB-INF下创建Spring的核心配置文件applicationContext.xml,代码如下:./这里将配置BeanJava EE实用教程17.1 Spring与与Struts 2的整合的整合修改web.xml内容,使得项目增加对Spring的支持,代码修改。在项目的src下创建文件st

5、ruts.properties,编辑代码内容如下:struts.objectFactory=spring 上述代码表示Struts 2的对象的生成交由Spring来完成,修改applicationContext.xml,代码如下:Java EE实用教程17.1 Spring与与Struts 2的整合的整合完成以后,修改struts.xml如下:/login_success.jsp Java EE实用教程17.2 Spring与与Hibernate整合整合h1创建项目创建项目首先,创建Web项目,命名为“Spring_Hibernate”。h2添加添加Spring的开发能力的开发能力在MyEcl

6、ipse中有对Spring框架的支持,右击项目名,依次选择“MyEclipse”“Add Spring Capabilities”,出现如图17.1所示的对话框,选中要应用的Spring的版本及所需的类库文件。注意,本书用的Spring版本为Spring 2.5,选择Spring的类库Spring 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

7、 添加Spring CapabilitiesJava EE实用教程17.2 Spring与与Hibernate整合整合单击“Next”按钮,提示是否建立Spring配置文件,在默认情况下选择application Context.xml文件的存放路径,选择在WEB-INF文件夹下,如图17.2所示,然后单击“Finish”按钮,完成Spring框架的添加。图17.2 创建applicationContext.xml文件Java EE实用教程17.2 Spring与与Hibernate整合整合h3添加添加Hibernate框架框架MyEclipse也有对Hibernate框架的支持,右击项目名,

8、依次选择“MyEclipse”“Add Hibernate Capabilities”菜单项,出现如图17.3所示的对话框,选择Hibernate版本及需要的类库。图17.3 添加Hibernate库Java EE实用教程17.2 Spring与与Hibernate整合整合单击“Next”按钮,出现如图17.4所示的对话框,提示是用Hibernate的配置文件还是用Spring的配置文件进行SessionFactory的配置,选择使用Spring来对Hibernate进行管理。这样,最后生成的工程中就不包含hibernate.cfg.xml,可以用Spring来对数据源及SessionFact

9、ory进行依赖注入。用Spring对Hibernate的数据源及SessionFactory进行管理图17.4 定义Hibernate配置Java EE实用教程17.2 Spring与与Hibernate整合整合单击“Next”按钮,出现如图17.5所示的对话框,提示是否创建一个新的Hibernate配置文件或是使用已有的配置文件。使用已经存在的Spring配置文件为SessionFactory的ID起名图17.5 定义Spring-Hibernate配置Java EE实用教程17.2 Spring与与Hibernate整合整合单击“Next”按钮,出现要求选择数据库连接信息的对话框。这里选择

10、前面创建的“MBOOKCONN”,在Bean Id中填写“datasource”数据源的Bean名称。在DB Driver中选择“MBOOKCONN”,下面的输入栏会自动填充,出现如图17.6所示的对话框。为DataSource ID起名 图17.6 指定新的Spring数据源连接信息Java EE实用教程17.2 Spring与与Hibernate整合整合单击“Next”按钮,出现如图17.7所示的对话框,提示是否创建SessionFactory类,由于本程序是由Spring注入sessionFactory,所以不用创建,单击“Finish”按钮。图17.7 定义SessionFactory

11、属性Java EE实用教程17.2 Spring与与Hibernate整合整合生成与数据库表对应的POJO类和对应的映射文件。打开MyEclipse的Database Explorer perspective,打开“MBOOKCONN”,依次选择“MBOOK”“dbo”“TABLE”展开数据库表,本项目选择对“book”表的增、删、改、查操作来讲解Spring与Hibernate的整合,故只需生成“book”表的POJO类及对应的映射文件。右击该表名,选择“Hibernate Reverse Engineering”菜单项,出现如图17.8所示的界面,选择要生成的文件及文件存放的包。图17.8

12、 Hibernate映射文件和POJO类Java EE实用教程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 save(Book book);public void delete(String ISBN);public void u

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

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

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

16、13所示的对话框。图17.13 添加User Libraries对话框 Java EE实用教程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、话框Java EE实用教程17.3.2 添加项目开发所需的添加项目开发所需的JARs现在可以为项目添加开发类库了。选择“MyEclipse”“Add Spring Capabilities”,出现选择版本及类库的对话框,如图17.15所示。选择“User Libraries”选项,也就是用户自定义的Libraries,这里的“User Libraries”包括了项目开发用到的所有的JARs,所以在后面为项目添加Hibernate开发能力时,可以不添加任何Jar包。图17.15 Spring选择类库Java EE实用教程17.3.3 实现实现Hibernate持久层持久层添加Hibernate的

18、开发框架,右击项目名,依次选择“MyEclipse”“Add Hibernate Capabilities”。前面说过,在添加Spring开发能力时,已经把所需的JARs全部添加进去,所以这里不用再添加Hibernate类库,故在选择Hibernate类库时,无须选择任何类库,单击“Next”按钮即可,添加Hibernate框架、Hibernate的反向工程及文件修改与17.2节中的第3步相同,读者可以自行操作,这里就不再列举了。Java EE实用教程17.3.4 编写编写DAO接口及实现类接口及实现类“登录”的DAO接口LoginDao.java代码为:package org.dao;imp

19、ort org.vo.Login;public interface LoginDao /查询信息 public Login checkLogin(String name,String password);Java EE实用教程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.HibernateDa

20、oSupport;import org.vo.Login;public class LoginDaoImpl extends HibernateDaoSupport implements LoginDao public Login checkLogin(String username,String password)Stringstr=username,password;List list=this.getHibernateTemplate().find(from Login where name=?and password=?,str);Login login=null;if(list.si

21、ze()0)login=(Login)list.get(0);return login;Java EE实用教程17.3.4 编写编写DAO接口及实现类接口及实现类“图书”的DAO接口BookDao.java代码为:package org.dao;import org.vo.Book;public interface BookDao /保存图书信息 public void addBook(Book book);/删除图书信息 public void deleteBook(String ISBN);/修改图书信息 public void updateBook(Book book);/查询图书信息

22、public Book selectBook(String ISBN);Java EE实用教程17.3.4 编写编写DAO接口及实现类接口及实现类BookDao的实现类BookDaoImpl.java的代码为。“读者”的DAO接口StudentDao.java代码为:package org.dao;import org.vo.Student;public interface StudentDao public Student selectStudent(String readerId);/查询读者信息Java EE实用教程17.3.4 编写编写DAO接口及实现类接口及实现类StudentDao

23、接口的实现类StudentDaoImpl.java代码为:package org.dao.impl;import java.util.List;import org.dao.StudentDao;import org.springframework.orm.hibernate3.support.HibernateDaoSupport;import org.vo.Student;public class StudentDaoImpl extends HibernateDaoSupport implements StudentDao public Student selectStudent(Str

24、ing readerId)List list=this.getHibernateTemplate().find(from Student where readerId=?,readerId);Student student=null;if(list.size()0)student=(Student)list.get(0);return student;Java EE实用教程17.3.4 编写编写DAO接口及实现类接口及实现类“借书”接口LendDao.java的代码为:package org.dao;import java.util.List;import org.vo.Book;import

25、 org.vo.Lend;import org.vo.Student;public interface LendDao /分页查询指定借书证号的读者所借图书的信息 public List selectBook(String readerId,int pageNow,int pageSize);/查询指定借书证号的读者所借图书的总数 public int selectBookSize(String readerId);/借书 public void addLend(Lend lend,Book book,Student student);/根据图书ID查询Lend信息 public Lend s

26、electByBookId(String bookId);/根据图书ISBN查询Lend信息 public Lend selectByBookISBN(String ISBN);LendDao接口的实现类LendDaoImpl.java代码为。Java EE实用教程17.3.5 编写业务逻辑接口及实现类编写业务逻辑接口及实现类“登录”的业务逻辑接口LoginService.java为:package org.service;import org.vo.Login;public interface LoginService public Login checkLogin(String usern

27、ame,String password);Java EE实用教程17.3.5 编写业务逻辑接口及实现类编写业务逻辑接口及实现类LoginService的实现类LoginServiceImpl.java为:package org.service.impl;import org.dao.LoginDao;import org.service.LoginService;import org.vo.Login;public class LoginServiceImpl implements LoginService private LoginDao loginDao;public Login chec

28、kLogin(String username,String password)return loginDao.checkLogin(username,password);public LoginDao getLoginDao()return loginDao;public void setLoginDao(LoginDao loginDao)this.loginDao=loginDao;Java EE实用教程17.3.5 编写业务逻辑接口及实现类编写业务逻辑接口及实现类“图书”的业务逻辑接口BookService.java为:package org.service;import java.ut

29、il.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的实现类BookServiceImpl.java为。Java EE实用教程17.3.5 编写业务逻辑接口及实现类编写业务逻辑接口及

30、实现类“读者”的业务逻辑接口StudentService.java为:package org.service;import org.vo.Student;public interface StudentService /查 public Student selectStudent(String readerId);Java EE实用教程17.3.5 编写业务逻辑接口及实现类编写业务逻辑接口及实现类StudentService.java的实现类StudentServiceImpl.java为:package org.service.impl;import org.dao.StudentDao;i

31、mport 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 setStud

32、entDao(StudentDao studentDao)this.studentDao=studentDao;Java EE实用教程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

33、 pageNow,int pageSize);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为。Java EE实用教程17.3.5 编写业务逻辑接口及实现类编写业务逻辑接口及实现类完成了DAO及业务

34、逻辑的编写后,需要在Spring的配置文件中进行依赖注入,以便于应用,故Spring的配置文件applicationContext.xml文件修改为。完成了对DAO及业务逻辑的注入后,还需要在该配置文件中配置事务支持,所以在配置文件中加入下面的Bean配置。Java EE实用教程17.3.6 “登录登录”功能的实现功能的实现在实现功能之前,先做一些简单的准备工作,先创建Struts 2的配置文件struts.xml文件,编写代码如下:./这里后面将添加action配置 还有就是Struts 2与Spring之间整合所需的struts.properties文件:struts.objectFact

35、ory=springJava EE实用教程17.3.6 “登录登录”功能的实现功能的实现“登录”功能的页面如图17.16所示,页面的代码见12.3节中所讲的“index.jsp”代码。图17.16 系统主界面(包含登录)Java EE实用教程17.3.6 “登录登录”功能的实现功能的实现在head.jsp中登录功能的部分代码如下:提交到了“login.action”,在struts.xml文件中action配置为:/index.jsp /index.jspJava EE实用教程17.3.6 “登录登录”功能的实现功能的实现Action类LoginAction.java实现为。在Spring配置

36、文件中对LoginAction进行依赖注入:Java EE实用教程17.3.7 “查询已借图书查询已借图书”功能的实现功能的实现要“查询已借图书”,首先要进入到“借书”功能的页面,如图17.17所示,界面实现的代码见第12章的12.3.2节的“lend.jsp”。图17.17 借书的主界面Java EE实用教程17.3.7 “查询已借图书查询已借图书”功能的实现功能的实现在输入借书证号后,单击“查询”按钮,查询出该读者的所有借书信息,如输入“081101”,出现如图17.18所示的界面。图17.18 查询已借图书页面Java EE实用教程17.3.7 “查询已借图书查询已借图书”功能的实现功能

37、的实现该功能的页面提交借书证号代码为:内容选择 借书证号:Java EE实用教程17.3.7 “查询已借图书查询已借图书”功能的实现功能的实现提交到了“selectBook.action”,相应地在struts.xml中的配置为:/lend.jspLendAction.java中实现的方法代码为。在Spring配置文件中对LendAction进行依赖注入:Java EE实用教程17.3.8 “借书借书”功能的实现功能的实现在某读者查询过已借的图书信息后,就可以继续借书了,输入正确的ISBN及图书ID后,单击“借书”按钮,可以完成借书,如图17.19所示。图17.19 借书成功页面Java EE

38、实用教程17.3.8 “借书借书”功能的实现功能的实现借书功能的页面代码为。这里做了一个判断,前面也已经讲解,就是若“readerId”没有值就让输入框不可编辑,这是因为如果没有“readerId”就不知道谁要借书了。当输入了借书证号查询后,此时“readerId”就被传递到页面中,输入图书的ISBN及图书ID,单击“借书”按钮,请求提交到“lendBook.action”,struts.xml中相应地配置为:/lend.jsp在LendAction.java中的方法实现为。Java EE实用教程17.3.9 “图书管理图书管理”功能的实现功能的实现图书管理界面如图17.20所示,页面实现代码

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

40、“book.action”时,在指定的Action类中就可以找到相应的方法进行处理。struts.xml中的配置为:/bookmanage.jsp/bookmanage.jsp *addBook,updateBook Java EE实用教程17.3.9 “图书管理图书管理”功能的实现功能的实现BookActon.java中相应的处理方法为。在Spring的配置文件中对BookAction进行依赖注入:Java EE实用教程17.3.9 “图书管理图书管理”功能的实现功能的实现h2.图书删除图书删除因为图书删除也是提交给了“book.action”,而且在提交标签中定义了使用的方法:所以,直接在

41、BookAction.java中编写方法即可:public 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()

42、!=null)this.setMessage(该图书已经被借出,故不能删除图书信息!);return SUCCESS;bookservice.deleteBook(book.getISBN();this.setMessage(删除成功!);return SUCCESS;Java EE实用教程17.3.9 “图书管理图书管理”功能的实现功能的实现h3图书查询图书查询同样,图书查询也是提交到了“book.action”,提交标签中定义为:对应BookAction.java中的方法为:public String selectBook()throws Exception if(book.getISBN

43、()=null|book.getISBN().equals()this.setMessage(请输入ISBN);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;Java EE实用教程17.3.9 “图书管理图书管理”功能的实现功能的实

44、现同时,在查询时要对照片进行处理,将下面的代码配置在struts.xml文件中:*addBook,updateBook Java EE实用教程17.3.9 “图书管理图书管理”功能的实现功能的实现当然,由于查询中要读取照片,所以在BookAction中还要定义读取照片的“getImage”方法:public String getImage()throws Exception HttpServletResponse response=ServletActionContext.getResponse();String ISBN=book.getISBN();book.setISBN(null);B

45、ook b=bookservice.selectBook(ISBN);byte photo=b.getPhoto();response.setContentType(image/jpeg);ServletOutputStream os=response.getOutputStream();if(photo!=null&photo.length!=0)for(int i=0;i photo.length;i+)os.write(photoi);os.flush();return NONE;Java EE实用教程17.3.9 “图书管理图书管理”功能的实现功能的实现h4图书修改图书修改图书修改其实

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

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!