首页 第12章 Hibernate与Struts 2的整合

第12章 Hibernate与Struts 2的整合

举报
开通vip

第12章 Hibernate与Struts 2的整合null第12章 Hibernate与Struts 2的整合应用实例第12章 Hibernate与Struts 2的整合应用实例12.1 Hibernate的反向工程12.3 功能实现12.2 编写DAO接口及实现类12.1 Hibernate的反向工程12.1 Hibernate的反向工程首先,建立对数据库MBOOK的连接,选择MyEclipse右上角的 图标,选择“MyEclipse Database Explorer”视图,在左边的“DB Browser”的空白区域,右击选择“New”...

第12章  Hibernate与Struts 2的整合
null第12章 Hibernate与Struts 2的整合应用实例第12章 Hibernate与Struts 2的整合应用实例12.1 Hibernate的反向工程12.3 功能实现12.2 编写DAO接口及实现类12.1 Hibernate的反向工程12.1 Hibernate的反向工程首先,建立对数据库MBOOK的连接,选择MyEclipse右上角的 图标,选择“MyEclipse Database Explorer”视图,在左边的“DB Browser”的空白区域,右击选择“New”,出现如图12.1所示的界面,用于填写要建立的连接的信息。 图12.1 填写数据源的信息12.1 Hibernate的反向工程12.1 Hibernate的反向工程图12.1中各栏的填写内容及说明如下: (1)Driver template:选择“Microsoft SQL Server 2005”, 关于同志近三年现实表现材料材料类招标技术评分表图表与交易pdf视力表打印pdf用图表说话 pdf 示应用的数据库为“SQL Server 2005”。 (2)Driver name:程序员自定义连接的名称,本例命名为“MBOOKCONN”。 (3)Connection URL:连接数据库的URL,localhost表示本机,若连接其他主机的数据库,要写该主机的IP地址,端口号为1433,连接的数据库的名为“MBOOK”。 (4)User name:连接数据库用户名,笔者所用数据库用户名为“sa”。读者可以根据自己的数据库连接的用户名来自定义。 (5)Password:连接数据库的密码,填写自己数据库连接的密码。 (6)Driver JARs:连接数据库需要的类库。单击“Add JARs”按钮,选择需要的类库即可。 12.1 Hibernate的反向工程12.1 Hibernate的反向工程填写完信息后,单击“Finish”按钮完成数据源的连接。这时“DB Browser”中会多出刚刚建立的数据源,如图12.2所示。 右击“MBOOKCONN”,选择“Open connection”打开连接,出现如图12.3所示的界面。 图12.2 DB Browser 图12.3 打开连接界面12.1 Hibernate的反向工程12.1 Hibernate的反向工程完成这些之后,可以创建Web项目,项目命名为“Struts2_Hibernate”。把Struts 2要用到的类库复制到项目的lib下,修改web.xml的工作在Struts 2中已经讲解,这里重复操作即可。下面着重讲解利用MyEclipse添加Hibernate的开发能力,利用该功能可以为项目的开发提供很大的方便。其实现步骤为:右击项目名“Struts2_Hibernate”,依次选择“MyEclipse”→“Add Hibernate Capabilities...”,出现如图12.4所示的界面。 图12.4 添加Hibernate开发所需类库12.1 Hibernate的反向工程12.1 Hibernate的反向工程选择应用的Hibernate版本“Hibernate 3.2”及Hibernate所需的类库,单击“Next”按钮,出现如图12.5所示的界面,创建hibernate.cfg.xml文件。 图12.5 创建hibernate.cfg.xml文件12.1 Hibernate的反向工程12.1 Hibernate的反向工程Configuration Folder中填写“src”,表示文件放在src目录下,填写完成后,单击“Next”按钮,出现如图12.6所示的界面,选择数据库的连接。 图12.6 选择数据库连接界面12.1 Hibernate的反向工程12.1 Hibernate的反向工程在“DB Driver”一栏选择刚刚创建的数据库的连接“MBOOKCONN”,下面的URL等栏会自动填充,单击“Next”按钮,出现如图12.7所示的界面,用于创建“Hibernate SessionFactory”类,该类用于获取Session及关闭Session。Java package栏的值是指把该类放在“org.util”包下。 图12.7 创建Hibernate SessionFactory类12.1 Hibernate的反向工程12.1 Hibernate的反向工程单击“Finish”按钮完成对Hibernate功能的添加。打开项目,可以看出Hibernate的类库及核心配置文件以及Hibernate SessionFactory类已经出现在项目中,如图12.8所示。 图12.8 添加Hibernate功能完成后项目目录12.1 Hibernate的反向工程12.1 Hibernate的反向工程接下来就可以利用反向工程生成数据库表对应的POJO类及映射文件了。打开“MyEclipse Database Explorer”视图,在刚刚建立的数据库连接中依次选择展开“MBOOK”→“dbo”→“TABLE”,这时MBOOK数据中的表就展现出来了,选中这些表,右击选择“Hibernate Reverse Engineering”,如图12.9所示,将会出现如图12.10所示的对话框。 映射文件和POJO将要放置的包名生成映射文件, *.hbm.xml生成对应的数据对象POJO 图12.9 Hibernate的反向工程 图12.10 生成POJO类及映射文件12.1 Hibernate的反向工程12.1 Hibernate的反向工程选择及填写完成后,单击“Next”按钮,选择主键生成策略,如图12.11所示。   图12.11 选择主键生成策略 12.1 Hibernate的反向工程12.1 Hibernate的反向工程本例中选择“assigned”,由程序员自己设置主键。选择后单击“Finish”完成操作,再打开项目目录,出现如图12.12所示的界面。 图12.12 项目目录12.1 Hibernate的反向工程12.1 Hibernate的反向工程下面简要列举这几个文件的代码,顺便做简要讲解。 Login.java代码为:  package org.vo; public class Login implements java.io.Serializable { private Integer id; //ID private String name; //用户名 private String password; //密码 private Byte role; //角色,true为管理员,false为读者 public Login() {} public Login(Integer id, String name, String password, Byte role) { this.id = id; this.name = name; this.password = password; this.role = role; } //省略上面属性的get和set 方法 快递客服问题件处理详细方法山木方法pdf计算方法pdf华与华方法下载八字理论方法下载 } 12.1 Hibernate的反向工程12.1 Hibernate的反向工程Login.hbm.xml文件代码。 后面粘贴映射文件时,将只粘贴“hibernate-mapping”部分,头部文件省略。 Student.java代码。 Student.hbm.xml代码。 Book.java的代码。 Book.hbm.xml文件代码。 Lend.java代码。 Lend.hbm.xml代码。 POJO类及映射文件完成后,必须在hibernate.cfg.xml文件中注册:   12.2 编写DAO接口及实现类12.2 编写DAO接口及实现类“登录”的DAO接口LoginDao.java代码为:  package org.dao; import org.vo.Login; public interface LoginDao { //查询信息 public Login checkLogin(String name,String password); }  LoginDao的实现类LoginDaoImpl.java代码。 12.2 编写DAO接口及实现类12.2 编写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); //查询图书信息 public Book selectBook(String ISBN); }  BookDao的实现类BookDaoImpl.java代码。 12.2 编写DAO接口及实现类12.2 编写DAO接口及实现类“读者”的DAO接口StudentDao.java代码为:  package org.dao; import org.vo.Student; public interface StudentDao { public Student selectStudent(String readerId); //查询读者信息 }  StudentDao接口的实现类StudentDaoImpl.java代码。 12.2 编写DAO接口及实现类12.2 编写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 selectBookSize(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代码。 12.3 功能实现12.3 功能实现准备工作完成以后,就可以开始实现功能了。Struts 2框架的类库添加及web.xml的修改前面已经做好准备,这里还需要建立struts.xml文件的大致框架,以便后面的功能实现时往里面配置action:   ...//这里添加action配置 12.3.1 “登录”功能的实现12.3.1 “登录”功能的实现首先,“登录”界面为主界面,如图12.13所示。图12.13 登录的主界面12.3.1 “登录”功能的实现12.3.1 “登录”功能的实现在head.jsp中登录功能的部分代码如下:   12.3.1 “登录”功能的实现12.3.1 “登录”功能的实现提交到了“login.action”,在struts.xml文件中action配置为:   /index.jsp /index.jsp  Action类LoginAction.java实现。 12.3.2 “查询已借图书”功能的实现12.3.2 “查询已借图书”功能的实现要“查询已借图书”,首先要进入到“借书”功能的页面,如图12.14所示,界面实现代码见第7章的7.4.1节的“lend.jsp”。 图12.14 借书的主界面12.3.2 “查询已借图书”功能的实现12.3.2 “查询已借图书”功能的实现在输入借书证号后,单击“查询”按钮,查询出该读者的所有借书信息,如输入“081101”,出现如图12.15所示的界面。 图12.15 查询已借图书页面12.3.2 “查询已借图书”功能的实现12.3.2 “查询已借图书”功能的实现该功能的页面提交借书证号代码为:  
内容选择

借书证号:

12.3.2 “查询已借图书”功能的实现12.3.2 “查询已借图书”功能的实现提交到了“selectBook.action”,相应地在struts.xml中的配置为:   /lend.jsp  LendAction.java中实现的方法代码。 12.3.2 “查询已借图书”功能的实现12.3.2 “查询已借图书”功能的实现在第7章中,查询出来的结果在页面中遍历后,利用“lend.java”模型来输出,代码为:  
图书IDISBN书名出版社价格借书时间
  12.3.2 “查询已借图书”功能的实现12.3.2 “查询已借图书”功能的实现只要把上面的代码修改为:  
图书IDISBN书名出版社价格借书时间
12.3.3 “借书”功能的实现12.3.3 “借书”功能的实现在某读者查询过已借的图书信息后,就可以继续借书了,输入正确的ISBN及图书ID后,单击“借书”按钮,就可以完成借书操作,如图12.16所示。 图12.16 借书成功页面12.3.3 “借书”功能的实现12.3.3 “借书”功能的实现借书功能的页面代码。 这里做了一个判断,前面也已经讲解过,若“readerId”没有值就让输入框不可编辑,这是因为如果没有“readerId”就不知道谁要借书了。当输入了借书证号查询过后,此时“readerId”就有值了,输入图书的ISBN及图书ID,就可以单击“借书”按钮,请求提交到“lendBook.action”,struts.xml中的相应配置为:   /lend.jsp  在LendAction.java中的方法实现。 12.3.4 “图书管理”功能的实现12.3.4 “图书管理”功能的实现图书管理的界面如图12.17所示,页面实现代码与第7章7.5.1中给出的“bookmanage.jsp”相同。 图12.17 图书管理界面12.3.4 “图书管理”功能的实现12.3.4 “图书管理”功能的实现该界面实现了图书的增、删、改、查功能,在逐一介绍之前,先回顾一下该表单的内容。 1.图书追加 图书追加,是向数据库中添加数据,页面的提交代码为:    在提交标签中定义了“method”属性,指定了该请求应用的Action类中的方法为“addBook”,故当4个按钮都提交给“book.action”时,在指定的Action类中就可以找到相应的方法进行处理。struts.xml中的配置为:   /bookmanage.jsp /bookmanage.jsp * addBook,updateBook  BookActon..java中相应的处理方法的代码。 12.3.4 “图书管理”功能的实现12.3.4 “图书管理”功能的实现2.图书删除 图书删除也是提交给“book.action”,在提交标签中定义使用的方法:    直接在BookAction.java中编写方法即可:  public String deleteBook() throws Exception{ //判断要删除的ISBN是否存在,即是否存在该书籍 if(book.getISBN()==null||book.getISBN().equals("")){ this.setMessage("请输入ISBN号"); return SUCCESS; }else if(bookDao.selectBook(book.getISBN())==null){ this.setMessage("您输入的ISBN号不存在"); return SUCCESS; }else if(new LendDaoImpl().selectByBookISBN(book.getISBN())!=null){ this.setMessage("该图书已经被借出,故不能删除图书信息!"); return SUCCESS; } bookDao.deleteBook(book.getISBN()); this.setMessage("删除成功!"); return SUCCESS; } 12.3.4 “图书管理”功能的实现12.3.4 “图书管理”功能的实现3.图书查询 同样,图书查询也是提交到“book.action”,提交标签中定义为:    对应的BookAction.java中的方法为:  public String selectBook() throws Exception{ Book b=bookDao.selectBook(book.getISBN()); if(b==null){ this.setMessage("不存在的ISBN号"); return SUCCESS; } Map request=(Map) ActionContext.getContext().get("request"); request.put("onebook", b); return SUCCESS; } 12.3.4 “图书管理”功能的实现12.3.4 “图书管理”功能的实现当然,由于查询中要读取照片,所以在BookAction中还要定义读取照片的“getImage”方法:  public String getImage() throws Exception{ HttpServletResponse response = ServletActionContext.getResponse(); String ISBN=book.getISBN(); Book b=bookDao.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(photo[i]); } os.flush(); } return NONE; } 12.3.4 “图书管理”功能的实现12.3.4 “图书管理”功能的实现4.图书修改 图书修改和图书添加差不多,区别在于图书修改一般要先根据ISBN查询出对应的图书信息,然后在其基础上进行修改,提交按钮的代码为:    对应的BookAction.java中的方法。 在图书添加及图书修改时,为了防止提交空数据,应用了验证框架对其进行验证,“BookAction-validation.xml”文件。
本文档为【第12章 Hibernate与Struts 2的整合】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_402256
暂无简介~
格式:ppt
大小:1MB
软件:PowerPoint
页数:0
分类:互联网
上传时间:2012-12-04
浏览量:15