JAVAWEB程序设计教程课后练习答案.pdf_第1页
JAVAWEB程序设计教程课后练习答案.pdf_第2页
JAVAWEB程序设计教程课后练习答案.pdf_第3页
JAVAWEB程序设计教程课后练习答案.pdf_第4页
JAVAWEB程序设计教程课后练习答案.pdf_第5页
已阅读5页,还剩32页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第 1 章Web 应用开发简介习题答案 1 第 1 章Web 应用开发简介 习题答案 1Web 在组成上包括_和_两部分。 答案: 服务器 客户端 2谈谈对面向对象的认识。 答案: 面向对象将将要解决的问题分解成各个对象,建立对象的目的不是为了完成一个步 骤,而是为了描叙解决问题中的各个步骤中的行为。面向对象编程方式是建立在面向过程 编程方式基础上, 其最重要的改变在于面向对象编程中, 程序将围绕被操作的对象来设计, 而不是操作本身。面向对象编程方式以类作为构造程序的基本单位,具有封装、抽象、继 承、多态性等特点。 3介绍几种常用的框架技术。 答案: Java 中常用的框架。 1Struts Struts 是 Apache 基金会 Jakarta 项目组的一个开源项目, 是一个基于 Sun J2EE 平台的 MVC 框架,它将 Servlet 和 JSP 标签作为实现自身功能的一部分。 2WebWork WebWork 是由 OpenSymphony 组织开发的,是一个基于 Web 的 MVC 框架。它在运行 时通过 Interceptor(拦截器)自动应用,因此脱离了 Action 类。 3Struts 2 Struts 2 是 Apache 基金会的一个开源项目, 它建立在 Struts 框架与 WebWork 框架基础 之上,继承了二者的优点,是目前非常流行的一个 Web 框架。 4Spring Spring 是一个以 IoC 和 AOP 为核心的轻量级容器框架。它提供了一系列的 Java EE 开 发解决方案,包括表示层的 Spring MVC、持久层的 Spring JDBC 以及业务层事务管理等众 Java Web 程序设计 2 多的企业级应用技术。 5Hibernate Hibernate 是一个 ORM(对象关系映射)框架,它对 JDBC 进行了轻量级的封装。通 过使用 Hibernate 框架,开发人员能够以面向对象的思维方式来操作数据库。 6Ibatis 相对于 Hibernate 而言,Ibatis 是一个“半自动化”的 ORM 实现框架,它主要致力于 POJO 与 SQL 之间的映射关系,是对“全自动化”ORM 框架的一种有益补充。 7EasyJWeb EasyJWeb 是一个核心基于模板技术实现的 MVC 框架,主要致力于 Java Web 应用程 序的快速开发。 4IDE 的用途是什么? 答案: IDE 是一种用于辅助开发人员开发应用程序的应用软件,它一般包括代码编辑器、编 译器、调试器和图形用户界面工具,有的还包括版本控制系统、性能分析器等更多工具, 因此 IDE 也就具有了编写、编译、调试等多种功能。正是基于这些功能,使用 IDE 能够减 少项目的开发周期,减轻程序员的工作量,提高应用程序的开发效率等。 5Web 应用服务器的用途是什么? Web 应用服务器是为创建、部署、运行以及管理 Web 应用提供多种运行时服务(如事 务、安全等等)的分布式系统,它是应用程序运行的一个基本环境。 第 1 章Web 应用开发简介习题答案 3 第 2 章Java EE 运行及开发环境 习题答案 1 配置 JDK 环境变量时, 需要编辑_变量, 需要新增_变量和_ 变量。 答案: Path Java_Home classpath 2Tomcat 的启动和停止程序位于其安装路径的_文件夹中。 答案: bin 3Tomcat 中_文件用于配置服务器端口连接等信息。 答案: server.xml 4在 MyEclipse 中,打开 MyEclipse-_-Tomcat 结点,选择 Tomcat6.0 结点,进入 Tomcat6.0 配置界面。 答案: Servers 5以下三个选项,_用于工程的发布。 答案: 1 213 Java Web 程序设计 4 第 3 章JSP 和 Servlet 习题答案 (1)JSP 的九个内置对象分别为_,_,_,_,_,_,_,_, _。 答案: request 对象 response 对象 session 对象 out 对象 page 对象 application 对象 pageContext 对象 config 对象 exception 对象 (2)画出 JSP 的工作原理图? 答案: JSP 的工作原理图: 第 1 章Web 应用开发简介习题答案 5 (3)page 指令的作用? 答案: page 指令用于定义 JSP 页面中的全局属性。 (4)jsp:useBean 指令的作用? 答案: jsp:useBean 指令用来在 JSP 页面内创建一个 JavaBean 实例。 (5)元素的作用? 答案: 元素用于要求服务器启动时就加载和初始化 Servlet。 (6)举一个声明的例子。 Java Web 程序设计 6 第 4 章SQL 与 JDBC 习题答案 1简述 SQL 的组成部分。 答案: SQL 语言由以下 3 部分组成,分别是: 数据库模式定义语言(DDL):CREATE、DROP、ALTER 等语句。 数据操纵语言(DML):INSERT、UPDATE、DELETE、SELECT 语句。 数据控制语言:GRANT、REVOKE、COMMIT、ROLLBACK 等语句。 2简述 JDBC 的执行步骤。 答案: (1)加载 JDBC 驱动程序 通过静态类 Class 类加载数据库驱动。 (2)取得数据库连接 通过 DriverManager 类中的 getConnection()获取数据库的连接对象 Connection (3)执行各种 SQL 语句 将 Connection 对象转换成 Statement 对象, 通过该对象的 executeUpdate()执行添加、 修 改以及删除的 SQL 语句。 (4)获取查询结果 将Connection对象转换成Statement对象, 通过该对象的executeQuery()执行查询的SQL 语句,该方法返回 ResultSet 对象。 (5)关闭数据库连接 通过 Connection 对象的 close()方法关闭数据库连接,并抛出异常。 3Statement 对象可以处理哪些类型的 SQL 语句,处理这些 SQL 语句的主要 方法是什么? 答案: Statement 接口的 executeUpdate(String sql)方法将执行添加(insert) 、修改(update)和 删除(delete)的 SQL 语句,执行成功后,将返回一个 int 型数值,该数值为影响数据库记 录的行数。该接口还可以通过 executeQuery()方法查询的 SQL 语句。 第 1 章Web 应用开发简介习题答案 7 4PreparedStatement 对象可以处理哪些类型的 SQL 语句,处理这些 SQL 语 句的主要方法是什么? 答案: PreparedStatement 接口的 executeUpdate(String sql)方法将执行添加(insert) 、修改 (update)和删除(delete)的 SQL 语句,执行成功后,将返回一个 int 型数值,该数值为影 响数据库记录的行数。该接口还可以通过 executeQuery()方法查询的 SQL 语句。 5CallableStatement 对象可以处理哪些类型的 SQL 语句,处理这些 SQL 语 句的主要方法是什么? 答案:CallableStatement 接口的 executeUpdate(String sql)方法将执行添加(insert) 、修 改(update)和删除(delete)的数据库的存储过程,执行成功后,将返回一个 int 型数值, 该数值为影响数据库记录的行数。 该接口还可以通过 executeQuery()方法查询的数据库存储 过程。 6在 SQL Server 数据库系统中,创建一个数据库,并且在该数据库下创建学 生信息表, 含有学生的基本信息, 并通过 JDBC 实现对该数据表内容实现添加、 修改、删除和查询的操作。 答案: JDBC 的代码如下: import java.sql.*; public class JDBConnection private final String dbDrive=“com.mysql.jdbc.Driver“; private final String url = “jdbc:mysql:/localhost:3306/db_text?characterEncoding=gb2312“; private final String userName = “sa“; private final String password = “; private Connection con = null; public JDBConnection() /通过构造方法加载数据库驱动 try Class.forName(dbDrive).newInstance(); catch (Exception ex) System.out.println(“数据库加载失败“); public boolean creatConnection() /创建数据库连接 try con = DriverManager.getConnection(url, userName, password); con.setAutoCommit(true); catch (SQLException e) return true; Java Web 程序设计 8 public boolean executeUpdate(String sql) /对数据表的增加、修改和删除的操作 if (con = null) creatConnection(); try Statement stmt = con.createStatement(); int iCount = stmt.executeUpdate(sql); System.out.println(“操作成功,所影响的记录数为“ + String.valueOf(iCount); return true; catch (SQLException e) return false; public ResultSet executeQuery(String sql) /对数据库的查询操作 ResultSet rs; try if (con = null) creatConnection(); Statement stmt = con.createStatement(); rs = stmt.executeQuery(sql); return null; catch (Exception e) return null; return rs; public void closeConnection()/关闭数据库连接 if(con=null) try con.close(); catch (SQLException e) 将 MYSQL 数据库驱动的类包加载在工程中后,读者可以通过上代码,调用相应的方 法,实现对学生信息表进行各种操作。 第 1 章Web 应用开发简介习题答案 9 第 5 章Struts 2 框架入门 习题答案 1简单介绍 MVC 设计模式。 答案: MVC英文为 Model-View-Controller, 即把一个应用的输入、 处理、 输出流程按照 Model、 View、 Controller 的方式进行分离, 这样一个应用被分成 3 个层: 模型层、 视图层和控制层, 从而可以使同一个应用程序使用不同的表现形式。 2简单介绍 Struts 2 的工作流程。 答案: Struts 2 框架的基本工作流程如下图所示: Java Web 程序设计 10 Struts 2 工作流程图 对 Struts 2 工作流程的详细说明如下: (1)客户端初始化一个指向 Web 容器(例如 Tomcat)的请求。 (2)请求经过一系列的过滤器(Filter)的过滤并传递给 FilterDispatcher。 (3) FilterDispatcher接收到请求信息后, 会根据URL在ActionMapper中搜索指定Action 的映射信息。 (4)如果找到符合的映射信息,ActionProxy 通过 Configuration Manager 在配置文件 “struts.xml”中搜索被请求的 Action 类。 (5)ActionProxy 创建一个被请求 Action 的实例,该实例将用来处理请求信息。 (6) 如果在 “struts.xml” 文件中存在与被请求 Action 相关的拦截器配置, 那么该 Action 的实例被调用的前后,这些拦截器也会先被执行。 (7)Action 对请求处理完毕以后返回一个逻辑视图,由此逻辑视图寻找对应的物理视 图(可以是 JSP、Velocity 模板、FreeMarker 模板等) ,并返回给客户端。 3在创建 Action 类时,需要注意哪些方面? 答案: 在 Struts 2 中,Action 可以以多种形式存在:普通的 Java 类、实现 Action 接口和继承 ActionSupport 类。 在 Action 类中通常包含以下内容: 无参数的 execute()方法:用于处理用户请求。 私有属性及其属性的 set、get 方法:Action 类中封装 HTTP 请求参数,因此私有 属性的名称应和 HTTP 请求参数的名称保持一致;程序通过属性的 set、get 方法 来处理请求参数,所以必须提供属性的 set、get 方法。 第 1 章Web 应用开发简介习题答案 11 4使用不同的结果类型时,需要如何配置? 答案: 在 Struts 2 应用程序中,所有的 Action 类在处理完成之后返回的都是一个字符串类型 的结果,这个结果作为一个逻辑视图而存在。Struts 2 框架正是通过这个字符串,在 “struts.xml”配置文件中将逻辑视图与物理视图建立起映射关系,而这一实现是由 元素来声明的。 元素的 type 属性用于指定结果的类型,而且默认情况下为 JSP 文件。当需要 使用不同的结果类型时,将 type 属性的值设置为相应的结果类型即可。 5 “struts.xml”文件中元素都有哪些属性?作用是什么? 答案: 元素用来配置 Action,它包含的属性如下表所示: 属性名称是否必须功能描述 name是请求的 Action 名称 class否Action 处理类对应具体路径 method否指定 Action 中的方法名 converter否指定 Action 使用的类型转换器 Java Web 程序设计 12 第 6 章Struts 2 进阶 习题答案 1如何部署和添加拦截器? 答案: 使用元素的子元素引入指定的拦截器, 在引入时需指定该拦 截器的名称及其实现类。下面是部署拦截器的示例代码: 使用元素的子元素加入所需拦截器。 下面是添加拦截器的示例 代码: /success.jsp 第 1 章Web 应用开发简介习题答案 13 2继承类_或类_可实现自定义类型转换器。 答案: DefaultTypeConverter StrutsTypeConverter 3在使用元素时,通过_元素来引入要使用的校验器。 答案: 4在 Struts 2 应用中如何实现国际化? 答案: 实现国际化的步骤: (1)创建国际化资源文件,例如 sunyang_zh_CN.properties、sunyang_en_US.properties。 (2)在资源文件中添加需要国际化的内容,例如 hello=你好 hello=hello (3)配置国际化资源文件,可将资源文件配置为全局范围、包范围或 Action 范围。 (4)调用国际化资源文件,在应用中使用不同的方式来获得国际化资源信息。 5在 Struts 2 应用中如何实现文件上传? 答案: 实现文件上传的步骤: (1)如果需要,在 perties 文件中重新配置上传解析器。 (2)在 Action 类中封装与上传文件相关的属性,例如: public class UploadAction extends ActionSupport private String title;/ 上传文件标题 private File pic;/ 上传文件 private String picContentType;/ 上传文件类型 private String picFileName;/ 上传文件名 private String savePath;/ 上传文件保存路径 public void setSavePath(String savePath) this.savePath = savePath; / 返回文件上传路径 private String getSavePath() HttpServletRequest request = ServletActionContext.getRequest(); return request.getRealPath(savePath); /省略其他属性的set、get方法 Java Web 程序设计 14 public String execute() throws Exception setSavePath(“);/ 将上传文件存储路径设为空 FileOutputStream fos = new FileOutputStream(getSavePath() + “ + getPicFileName();/ 以上传文件存放路径和原文件名建立一个输出流 FileInputStream fis = new FileInputStream(getPic();/ 以上传文件建立一个输入流 byte buffer = new byte1024; int len = 0; while (len = fis.read(buffer) 0) fos.write(buffer, 0, len); / 将上传文件写入到输出流所对应的文件中 return SUCCESS; (3) 将用于实现文件上传的 Action 类进行相关的配置, 配置方式和普通的 Action 类相 同。 第 1 章Web 应用开发简介习题答案 15 第 7 章Struts 2 中应用模板语言 习题答案 1Velocity 中属性引用的赋值方式都有哪些?。 答案: Velocity 中属性引用的赋值方式有两种: 使用 Hashtable 对象赋值。 使用方法赋值。 2简述几种 Velocity 的指令及其用法。 答案: 下面是几种常见的 Velocity 指令: set 指令:给引用赋值。 使 if/elseif/else 指令: 类似于 Java 语言中的 ifelseifelse 指令, 可进行条件控制。 set 指令:给引用赋值。 foreach 指令:进行遍历循环。 macro 指令:用来定义宏。 3简述 FreeMarker 的宏指令及其用法? 答案: 在 FreeMarker 中,宏是一个用户自定义指令,定义完宏后就可以在模板中用来使用 宏。宏是使用 macro 指令来定义的。例如使用下面的代码定义宏: 书的名字:$bookname 使用下面的代码在模板中使用宏: 书的名字:$bookname Java Web 程序设计 16 4在 FreeMarker 中如何格式化数字? 答案: 在 FreeMarker 中可使用#expre; format这种形式格式化数字, 其中的 format 使用 mN 或 MN 表示,mN 代表小数部分最小 N 位,MN 代表小数部分最大 N 位。 5使用 Velocity 模板在控制台输出一本图书的相关信息。 实例内容:在控制台输出图书的 id、图书的名称、图书的作者、图书的价格、图书的 出版社、图书的 出版日期,要求使用方法赋值的方式给各个属性赋值。 答案: (1) 创建一个 Java 工程, 名称为 booksys, 导入工程所需的 jar 文件 velocity-dep-1.5.jar。 (2)在工程下创建模板文件 showBookInfo.vm,该模板文件可输出图书的相关信息, 模板文件的代码如下: 图书id:$book.bookid 图书名称:$book.bookname 图书作者:$book.bookauthor 图书价格:$book.bookprice 出版社:$book.bookcencern 出版日期:$book.bookdate (3)在工程的 sunyang 包下创建一个类 Book.java,该类为一个 JavaBean,代表图书的 相关信息。类 Book 的代码如下: public class Book private int bookid; /id号 private String bookname; /书名 private String bookauthor; /作者 private double bookprice; /价格 private String bookcencern; /出版社 private String bookdate; /出版日期 public int getBookid() return bookid; public void setBookid(int bookid) this.bookid = bookid; public String getBookname() return bookname; public void setBookname(String bookname) this.bookname = bookname; public String getBookauthor() 第 1 章Web 应用开发简介习题答案 17 return bookauthor; public void setBookauthor(String bookauthor) this.bookauthor = bookauthor; public double getBookprice() return bookprice; public void setBookprice(double bookprice) this.bookprice = bookprice; public String getBookcencern() return bookcencern; public void setBookcencern(String bookcencern) this.bookcencern = bookcencern; public String getBookdate() return bookdate; public void setBookdate(String bookdate) this.bookdate = bookdate; (4)在工程的 sunyang 包下创建一个类 BookVelocity.java,该类用来给模板提供值。类 BookVelocity 的代码如下: import java.io.StringWriter; import org.apache.velocity.VelocityContext; import org.apache.velocity.app.Velocity; public class BookVelocity public static void main(String args) try Velocity.init();/初始化Velocity引擎 catch (Exception e) e.printStackTrace(); VelocityContext context = new VelocityContext();/ 初始化Velocity上下文 Book book=new Book(); /给Book属性赋值 Java Web 程序设计 18 book.setBookid(200803); book.setBookname(“JSP教程“); book.setBookauthor(“sunyang“); book.setBookprice(53.2); book.setBookcencern(“XX出版社“); book.setBookdate(“2008-02-03“); context.put(“book“, book);/将Book对象放入Velocity上下文中 StringWriter writer = new StringWriter(); try /把模板和上下文结合起来 Velocity.mergeTemplate(“showBookInfo.vm“, “GBk“, context, writer); catch (Exception e) e.printStackTrace(); System.out.println(writer.toString();/控制台上输出 (4)运行程序,控制台上的输出结果如下图所示: 6使用 FreeMarker 编写一个用户登录实例。 实例内容:当用户在登录页面中没有输入任何信息就登录时,提示用户需要输入用户 名和密码方可登录, 若用户输入错误的用户名或密码, 提示用户输入的用户名或密码错误, 若用户输入正确的用户名和密码,登录成功,页面跳转到欢迎用户登录页面。 (1)创建一个 Web 工程,名称为 login,导入工程所需的 jar 文件, (2)在 WebRoot 下新建一个文件夹 freemarker,在 freemarker 创建模板文件 login.ftl、 welcome.ftl 和 error.ftl,其中 login.ftl 为用户登录页面,welcome.ftl 为欢迎页面,error.ftl 为 登录失败页面。login.ftl 的代码如下: 登录页面 第 1 章Web 应用开发简介习题答案 19 用户登录 用户名 密码 welcome.ftl 的代码如下: 欢迎页面 欢迎你:$username error.ftl 的代码如下: 失败页面 $message (3)在工程的 sunyang 包下创建一个 Servlet 类 LoginFreeMarker.java,该 Servlet 类用 来进行用户登录判断,若用户登录成功,页面则转向欢迎页面,否则转向登录失败页面, 类 LoginFreeMarker 的代码如下: Java Web 程序设计 20 import java.io.IOException; import java.io.Writer; import java.util.HashMap; import java.util.Map; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import freemarker.template.Configuration; import freemarker.template.Template; import freemarker.template.TemplateException; public class LoginFreeMarker extends HttpServlet private Configuration configuration; /初始化FreeMarker配置 public void init() configuration = new Configuration();/ 创建Configuration实例 configuration.setServletContextForTemplateLoading(getServletContext(), “freemarker“);/ 指定模板的位置在freemarker目录下 protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException doPost(req, resp); protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException Map data = new HashMap();/ 建立数据模型 String username=req.getParameter(“username“); String password=req.getParameter(“password“); Template t=null; if(username.equals(“sunyang“)/将用户信息放入数据模型中 t = configuration.getTemplate(“welcome.ftl“);/ 加载模板文件 else /将提示信息放入数据模型中 data.put(“message“, “输入的用户名或密码错误“); t = configuration.getTemplate(“error.ftl“);/ 加载模板文件 /在页面里使用模板的charset, /使用text/html MIME-type resp.setContentType(“text/html; charset=“ + t.getEncoding(); 第 1 章Web 应用开发简介习题答案 21 Writer out = resp.getWriter(); try cess(data, out);/将数据传向模板,处理并输出数据 catch (TemplateException e) e.printStackTrace(); (4)在 web.xml 中配置 LoginFreeMarker,配置的代码如下: LoginFreeMarker sunyang.LoginFreeMarker LoginFreeMarker /freemarker/login (5)发布并运行程序,登录页面的界面如下图所示: 如果用户输入错误的用户名和密码,单击【登录】按钮则显示如下图所示的界面: Java Web 程序设计 22 如果用户输入的用户名和密码正确,则显示如下图所示的界面: 第 1 章Web 应用开发简介习题答案 23 第 8 章初识 Hibernate 框架 习题答案 1什么是 ORM? 答案: ORM 就是对象关系映射。其中的“O”代表的就是对象(object) ,“R”代表的是关系 “relation”,M 代表的是映射“mapping” 。其原理就是将对象与表、对象的属性与表的字段 分别建立映射关系。 2Hibernate 有那些配置文件?这些配置文件都使用什么语法配置? 答案: HIbernate 有两个配置文件。一个配置文件是 hibernate.cfg.xml,使用 XML 语法来配置 数据库连接等信息,或者 perties,使用名称=值的形式配置。 HIbernate 的另一个配置文件是映射文件, 用来经数据表中的字段信息映射项目中创建 的持久化的属性信息。这样才能使用 HIbernate 的 ORM 机制,操作持久化类对象属性的同 时就可以对数据中的数据进行更改。 3简述在 Hibernate 中使用的映射关系类型。 答案: 映射关系类型如下表所示: 数据表字段类型Java 数据类型Hibernate 映射类型 INTint、java.lang.Integerinteger TINYINTbyte、java.lang.Bytebyte SMALLINTshort、java.lang.Shortshort BIGINTlong、java.lang.Longlong TINYINTbyte、java.lang.Bytebyte BIGINTlong、java.lang.Longlong FLOATfloat、java.lang.Floatfloat DOUBLEdouble、java.lang.Doubledouble NUMERICjava.math.BigDecimalbig_decimal Java Web 程序设计 24 CHARchar、java.lang.Charactercharacter CLOBjava.lang.Stringtext VARCHAR java.lang.Stringstring java.lang.Classclass java.util.Localelocale java.util.TimeZonetimezone java.util.Currencycurrency BIT boolean、 java.lang.Boolean boolean DATE java.util.Date、java.sql.Datedate java.util.Calendarcalendar_date TIMEjava.util.Date、java.sql.Timetime TIMESTAMP java.util.Date、 java.sql.Timestamp timestamp java.util.Calendarcalendar VARBINARY、BLOB bytebinary java.io.Serializableserializable CLOB java.sql.Clobclob java.sql.Blobblob 4Hibernate 中用于开始使用 Hibernate 的入口配置类是什么? 入口类是 Configuration,该类用来读取 HIbernate 的配置文件并实例化 SessionFactory 对象等。该类的实例化代码如下。 使用属性文件配置 HIbernate 时:Configuration config=new Configuration(); 使用配置文件配置 HIbernate 时:Configuration config=new Configuration().configrue(); 5Hibernate 中的关联关系都有哪些? 实体之间通过关系来相互关联, 关系之间有一对一 (1:1) 、 一对多 (1:n) 和多对多 (n:m) 的关系。 第 1 章Web 应用开发简介习题答案 25 第 9 章Hibernate 查询 习题答案 1Hibernate 中的检索策略分为:_,_,_,_。 答案: 立即检索 延迟检索 预先检索 批量检索 2请简述 Hibernate 中的查询方式以及它们分别在什么样的场合下使用。 答案: HQL:适用于较多的静态检索时。 QBC:适用于动态条件检索时。 原生 SQL:适用于通过 SQL 才可以进行检索的特殊数据库时。 3请简述 Hibernate 一对多关联查询时应该注意的问题。 “一”的一方如何配 置, “多”的一方如何配置。 答案: HIbernate 的一对多关联时,必须正确的配置属性和数据库的主外键,否则 HIbernate 的不能进行关联查询。 Hibernate中 对 这 种 一 对 多 , 多 对 一 的 处 理 方 式 为 , 使 用 ,元素来实现。 关系实体中的“一”的配置: 首先在持久化类 BookInfoVo 中定义关联表的外键 bookno,定义的属性使用 Set 类型, 同时需要实例化,代码为:private Set bookno =new HashSet(); 同时要生成该对象的 getter 和 setter 方法。 在配置文件中通过元素来配置,配置的详细代码为。 标签中的 name:配置的就是在持久化类中配置的 Set 类型的 bookno; :该标签配置的是关联表的外键。 :标签配置的是一对多关系中关联的多的一方的持久化类的全路径。 Java Web 程序设计 26 “多”的配置: 首先在持久化类 BookNO 中配置“一”的持久化类类型的对象,不需要实例化。代码 如下,同时生成该对象的 getter 和 setter 方法。 private BookInfoVo bookinfovo ; 接下来在该持久化类对应的配置文件中配置标签,代码中的关键字描述如下。 name:图书编号持久化类中配置的 BookInfoVo 类型的对象 bookinfovo。 column:配置的图书编号表当中关联图书信息表的外键。 class:配置的是图书编号表的关联表持久化类的全路径。 4简答多对多关联查询时,如何获得对方的属性信息。 答案: 多对多关联时,可以使用对象的 getXXX()方法来获得关联对象集。获得的对象集 是 Set 类型的,可以通过迭代的方式获得每一个对象的实例。 5下面的代码中使用的是那种查询方式? 代码中配置的是一对多关联关系中的“一”的一方。 第 1 章Web 应用开发简介习题答案 27 第 10 章Hibernate 性能优化 习题答案 1什么是事务?事务的四个特性是什么? 答案: 事务(Transaction)是访问数据库时,可能更新数据库中各种数据项的一个程序执行单 元。 事务的四个基本特性是原子性、一致性、隔离性、持久性。 2简述 Hibernate 的支持的事务类型。 答案: HIbernate 中支持 JDBC 的事务类型和 JTA 事务类型。JDBC 事务类型是 HIbernate 封 装了的原始的 JDBC 事务,JTA 事务类型是由容器来控制的事务类型。 3Hibernate 默认支持的事务类型是哪种,如何使用? 答案: HIbernate 默认使用的事务类型是 JDBC。不指定事务类型时使用就是 JDBC 的事务。 代码中使用 JDBC 事务如下: /实例化Configure类 Configuration config=new Configuration(); /建立Session工厂 sessionFactory=config.buildSessionFactory(); /开启会话 Session session=sessionFactory.openSession(); /定义事务处理对象 Transaction tx=null; try /开始事务 tx=session.beginTransaction(); tx.begin(); Java Web 程序设计 28 /提交事务 mit(); catch(Exception e) e.printStackTrace(); /回滚事务 tx.rollback(); finally /关闭Session session.close(); 4并发问题的五个类型分别是:_,_,_,_。 答案: 第一类丢失更新 脏读 虚读 不可重复读 第二类丢失更新 5Hibernate 中的一级缓存在什么情况下提交? HIbernate 中的一级缓存是事务级别的,当事务被提交后,缓存被清空。 6如下的代码中使用了 Hibernate 中的哪种事务类型,第几级缓存?程序中的 数据在执行哪句代码时被更新?为什么要考虑更新缓存中的数据? / 实例化 Session Session session = sessionFactory.openSession(); / 定义事务处理对象 Transaction tx = session.beginTransaction(); / 开始事务 tx.begin(); / 保存图书信息数据 for (int i = 0; i 50000; i+) BookInfoVo book = new BookInfoVo(); session.save(book); if (i % 100 = 0) session.flush(); session.clear(); 第 1 章Web 应用开发简介习题答案 29 / 提交事务 mit(); / 关闭 session session.close(); 答案: 代码使用的是 HIbernate 的 JDBC 事务类型,一级缓存。代码执行到 session.flush 时被 提交,同时清空缓存。这样做的原因是系统在处理大量数据时,会将数据放置在内存中, 超过了内存的容量会导致系统异常或者瘫痪。 Java Web 程序设计 30 第 11 章Spring 框架入门 习题答案 1Spring 框架有哪些突出的优点? 答案: Spring 框架技术之所以受到广泛的欢迎和使用,与其自身的特点有密切联系: 开源:自从 Spring 框架问世之初,它就是一个开放源代码的框架。而正是由于这 一点,才使得它能够被更多的 Java 开发人员所研究、使用,并不断得以完善、发 展。 轻量级:Spring 无论是大小还是系统开销都算是轻量级的,整个框架可以被压缩 在几 M 的 JAR 包中,应用中处理 Spring 的开销也微乎其微。 方便解耦:Spring 提倡通过控制反转(IoC)技术实现松耦合。通过 Spring 中的 IoC 容器管理各个对象之间的依赖关系,能够有效避免硬性编码造成的耦合过于 紧密的状况。 面向切面编程(AOP) :Spring 对面向切面编程提供了良好的支持,通过 Spring 提供的 AOP 功能,可以轻松实现业务逻辑与系统服务(例如日志,事务等)的分 离。因此,开发人员能够更加专注于业务逻辑实现。 方便集成其它框架:Spring

温馨提示

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

评论

0/150

提交评论