Struts2+Hibernate架构技术教程课后参考答案_系统架构师培训教程
Struts2+Hibernate架构技术教程课后参考答案由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“系统架构师培训教程”。
第1章
Struts2框架技术入门
1.5 习题 1.5.1 选择题
1.D 2.A 3.C 4.B 5.B 1.5.2 填空题
1.MVC
2.Struts1和WebWork 3.IBM 4.FilterDispatcher 5.JSP、Struts2标签
1.5.3 简答题
1.简述MVC设计模式的工作流程。答:MVC设计模式工作流程是:
(1)用户的请求(V)提交给控制器(C);
(2)控制器接受到用户请求后根据用户的具体需求,调用相应的JavaBean或者EJB(M部分)来进行处理用户的请求;
(3)控制器调用M处理完数据后,根据处理结果进行下一步的调转,如跳转到另外一个页面或者其他Servlet。
2.简述Struts2的工作原理。
答:Struts2中使用拦截器来处理用户请求,从而允许用户的业务控制器Action与Servlet分离。用户请求提交后经过多个拦截器拦截后交给核心控制器FilterDispatcher处理,核心控制器读取配置文件struts.xml,根据配置文件的信息指定某一个业务控制器Action(POJO类)来处理用户数据,业务控制器调用某个业务组件进行处理,在处理的过程中可以调用其他模型组件共同完成数据的处理。Action处理完后会返回给核心控制器FilterDispatcher一个处理结果,核心控制器根据返回的处理结果读取配置文件struts.xml,根据配置文件中的配置,决定下一步跳转到哪一个页面。
一个客户请求在Struts2框架中处理的过程大概有以下几个步骤:(1)客户提交请求到服务器;
(2)请求被提交到一系列的过滤器过滤后最后到FilterDispatcher;FilterDispatcher是核心控制器,是基于Struts2中MVC模式的控制器部分;
(3)FilterDispatcher读取配置文件struts.xml,根据配置信息调用某个Action来处理客户请求;
(4)Action执行完毕,返回执行结果,根据struts.xml的配置找到对应的返回结果。1.5.4 实训题
略
第2章
Struts2核心组件详解 2.7 习题
2.7.1 选择题
1.B 2.C 3.B 4.D 5.B 6.D 2.7.2 填空题
1.struts.xml和struts.properties 2.struts.xml、struts.properties和web.xml 3.Action和拦截器 4.非耦合性
5.IoC方式和非IoC方式
6.不指定method属性和指定method属性 7.表达式、根对象和上下文环境 8.UI标签、非UI标签 9.表单标签和非表单标签 10.数据标签和控制标签
2.7.3 简答题
1.简述struts.xml配置文件的作用。
答:Struts2的核心配置文件是struts.xml,struts.xml具有重要的作用,所有用户请求被Struts2核心控制器FilterDispatcher拦截,然后业务控制器代理通过配置管理类查询配置文件struts.xml中由哪个也Action处理。
2.简述Struts2的核心控制器FilterDispatcher的作用。
答:FilterDispatcher是Struts2框架的核心控制器,该控制器作为一个Filter运行在Web应用中,它负责拦截所有的用户请求,当用户请求到达时,该Filter会过滤用户请求。如果用户请求以action结尾,该请求将被转入Struts2框架处理。Struts2框架获得了*.action请求后,将根据*.action请求的前面部分决定调用哪个业务控制器组件,例如,对于login.action请求,Struts2调用名为login的Action来处理该请求。Struts2应用中的Action都被定义在struts.xml文件中,在该文件中定义Action时,定义了该Action的name属性和cla属性,其中name属性决定了该Action处理哪个用户请求,而cla属性决定了该Action的实现类。
3.简述Struts2的业务控制器Action的作用。答:Action类中包含了对用户请求的处理逻辑,因此也把Action称为Action业务控制器。Action是应用的核心,业务控制器是Struts2中实现业务控制的中心,除了保存用户的数据外,它也负责调用其他模型组件在execute()方法中进行数据处理。
2.7.4 实训题
略
第3章
Struts2的高级组件
3.6 习题 3.6.1 选择题
1.A 2.A 3.B 4.C 5.C 3.6.2 填空题
1.properties 2.native2ascii 3.AOP 4.服务器端校验
3.6.3 简答题
1.什么是国际化,为什么使用国际化? 答:“国际化”是指一个应用程序在运行时能够根据客户端请求所来自的国家/地区、语言的不同而显示不同的用户界面。例如,请求来自于一台中文操作系统的客户端计算机,则应用程序响应界面中的各种标签、错误提示和帮助信息均使用中文文字;如果客户端计算机采用英文操作系统,则应用程序也应能识别并自动以英文界面做出响应。
引入国际化机制的目的在于提供自适应的、更友好的用户界面,而并未改变程序的其他功能/业务逻辑。人们常用I18N 这个词作为“国际化”的简称,其来源是英文单词Internationalization 的首末字母I 和N 及它们之间的字符数18。
2.简述Struts2中实现国际化流程的过程。答:(1)不同地区使用操作系统环境不同,如中文操作系统、英文操作系统、韩文操作系统等,在获得客户端地区的语言环境后,struts.xml文件会找国际化资源文件,当时中文语言环境,就加载中文国际化资源文件。所示国际化需要编写支持多个语言的国际化资源文件,并且配置struts.xml文件。
(2)根据选择的语言加载相应的国际化资源文件,视图通过Struts2标签读取国际化资源文件把数据输出到页面上,完成页面的显示。
3.什么是拦截器,拦截器的作用是什么?
答:拦截器(Interceptor)体系是Struts2的一个重要组成部分,正是大量的内置拦截器才提供了Struts2的大部分操作。当FilterDispatcher拦截到用户请求后,大量的拦截器将会对用户请求进行处理,然后才调用用户自定义的Action类中的方法来处理请求,比如params拦截器将HTTP请求中的参数解析出来,将这些解析出来参数设置为Action的属性;servlet-config拦截器直接将HTTP请求中的HttpServletRequest实例和HttpServletResponse实例传给Action;国际化拦截器i18n将国际化资源进行操作;文件上传拦截器fileUpload将文件信息传给Action。另外还有数据校验拦截器对数据校验信息进行拦截。对于Struts2的拦截器体系而言,当需要使用某个拦截器时,只需在配置文件struts.xml中配置就可以使用;如果不需要使用该拦截器,也是只需在struts.xml配置文件中取消配置即可。Struts2的拦截器可以理解为一种可插拔式的设计思想,所以Struts2框架具有非常好的可扩展性。
4.简述在Java Web应用开发Struts2的输入校验的作用。
答:在互联网上,Web站点是对外提供服务的,由于站点的开放性,Web站点保存的数据主要都是从客户端接受过来。输入数据的用户来自不同的行业,有着不同的教育背景和生活习惯,从而不能保证输入内容的正确性。例如,用户操作计算机不熟悉、输入出错、网络问题或者恶意输入等,这些都可能导致数据异常。如果对数据不加校验,有可能导致系统阻塞或者系统崩溃。
3.6.4 实训题
略
第5章
Hibernate框架技术入门
5.5 习题
5.5.1 选择题
1.A 2.B 3.A 5.5.2 填空题
1.JDBC和ORM 2.hibernate.cfg.xml和hibernate.properties 3.xxx.hbm.xml或者.hbm.xml 4.临时状态(transient)、持久化状态(persistent)和脱管状态(detached)
5.5.3 简答题
1.简述Hibernate的特点。答:(1)Hibernate是一个开放源代码的对象关系映射框架,它对JDBC 进行了非常轻量级的对象封装,使得Java 程序员可以随心所欲地使用面向对象编程思维来操纵数据库。Hibernate可以应用在任何使用JDBC的场合,既可以在Java的客户端程序使用,也可以在Servlet/JSP的Web应用中使用,最具革命意义的是,Hibernate可以在JavaEE框架中取代CMP,完成数据持久化的重任。(2)Hibernate的目标是成为Java中管理数据持久性问题的一种完整解决方案。它协调应用与关系数据库的交互,让开发者解放出来专注于手中的业务问题。
(3)Hibernate是一种非强迫性的解决方案。开发者在写业务逻辑与持久化类时,不会被要求遵循许多Hibernate特定的规则和设计模式。这样,Hibernate就可以与大多数新的和现有的应用平顺地集成,而不需要对应用的其余部分做破坏性的改动。
2.简述Hibernate的工作原理。
答:首先,Configuration读取Hibernate的配置文件及映射文件中的信息,即加载配置文件和映射文件,并通过Hibernate配置文件生成一个多线程的SeionFactory对象,然后,多线程SeionFactory对象生成一个线程Seion 对象,Seion对象生成Query对象或者Transaction对象;可通过Seion对象的get(),load(),save(),update(),delete()和saveOrUpdate()等方法对PO进行加载、保存、更新、删除等操作;在查询的情况下,可通过Seion 对象生成一个Query对象,然后利用Query对象执行查询操作;如果没有异常,Transaction对象将提交这些操作结果到数据库中。
5.5.4 实训题
略
第6章
Hibernate核心组件详解
6.11 习题 6.11.1 选择题
1.A 2.A 3.B 6.11.2 填空题
1.hibernate.cfg.xml和hibernate.properties 2.hbm.xml 3.get()和load()6.11.3简答题
1.简述Hibernate配置文件的作用。
答:Hibernate框架的配置文件用来为程序配置连接数据库的参数,例如,数据库的驱动程序名,URL,用户名和密码等。Hibernate的基本配置文件有两种:hibernate.cfg.xml和hibernate.properties。前者包含了Hibernate与数据库的基本连接信息,在Hibernate工作的初始阶段,这些信息被先后加载到Configuration和SeionFactory实例;前者还包含了Hibernate的基本映射信息,即系统中每一个类与其对应的数据库表之间的关联信息,在Hibernate工作的初始阶段,这些信息通过hibernate.cfg.xml的mapping节点被加载到Configuration和SeionFactory实例中。这两种文件信息包含了Hibernate的所有运行期参数。两者的配置内容基本相同,但前者的使用稍微方便一些,例如,在hibernate.cfg.xml 中可以定义要用到的xxx.hbm.xml 映射文件列表,而使用hibernate.properties 则需要在程序中以硬编码方式指明。hibernate.cfg.xml是Hibernate的默认配置文件。
2.简述Hibernate的Configuration类的作用。答:Configuration类的主要作用是解析Hibernate的配置文件和持久化映射文件中的信息,即负责管理Hibernate的配置信息。Hibernate运行时需要获取一些底层实现的基本信息,如数据库驱动程序类、数据库的URL等。这些信息定义在Hibernate的配置文件(hibernate.cfg.xml或hibernate.properties)中。然后通过Configuration对象的buildSeionFactory()方法创建SeionFactory对象,所以Configuration对象一般只有在获取SeionFactory对象时需要使用。当获取了SeionFactory对象之后,由于配置信息已经由Hibernate维护并绑定在返回的SeionFactory中,因此该Configuration已无使用价值。
3.简述Hibernate的Seion的作用。
答:Seion对象是Hibernate技术的核心,持久化化对象的生命周期、事务的管理和持久化对象的查询、更新和删除都是通过Seion对象来完成的。Hibernate在操作数据库之前必须先取得Seion对象,相当于JDBC在操作数据库之前必须先取得Connection对象一样。Seion对象不是线程安全的(Thread Safe),一个Seion对象最好只由一个单一线程来使用。同时该对象的生命周期要比SeionFactory要短,一个应用系统中可以自始至终只使用一个SeionFactory对象,其生命通常在完成数据库的一个短暂的系列操作之后结束。
6.11.4实训题
略
第7章
Hibernate的高级组件
7.6 习题 7.6.1 选择题
1.B 2.A 3.C 7.6.2 填空题
1.一对一、一对多和多对多 2.HQL、CQ、NSQL 3.一级Cache和二级Cache 7.6.3简答题
1.简述一对一关联关系两种方式的区别
答:一对一关联关系分为主键关联和外键关联,主键关联共享一个主键,外键关联各自都有自己的主键,通过一个表的外键关联起来。
2.简述事务的特性。
答:事务具备原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)和持久性(Durability)4 个属性,简称ACID。下面对这4 个特性分别进行说明:
原子性:将事务中所做的操作捆绑成一个原子单元,即对于事务所进行的数据修改等操作,要么全部执行,要么全部不执行。
一致性:事务在完成时,必须使所有的数据都保持一致状态,而且在相关数据中,所有规则都必须应用于事务的修改,以保持所有数据的完整性。事务结束时,所有的内部数据结构都应该是正确的。
隔离性:由并发事务所做的修改必须与任何其他事务所做的修改相隔离。事务查看数据时数据所处的状态,要么是被另一并发事务修改之前的状态,要么是被另一并发事务修改之后的状态,即事务不会查看由另一个并发事务正在修改的数据。这种隔离方式也叫可串行性。
持久性:事务完成之后,它对系统的影响是永久的,即使出现系统故障也是如此。
7.6.4实训题
略
第9章 Spring3框架技术入门
9.5 习题 9.5.1 选择题 1.B 2.A 3.C 9.5.2 填空题
1.配置文件
2.BeanFactory接口及其相关类,ApplicationContext接口及其相关类 3.设置注入,构造注入
9.5.3 简答题 9.5.4 实训题
第10章 Spring3的AOP框架
10.7 习题 10.7.1 选择题1.B 2.D 3.C
10.7.2 填空题
1.静态AOP,动态AOP 2.通知
3.静态代理,动态代理
4.前置通知(Before Advice),后置通知(After Advice)
10.7.3 简答题 10.7.4 实训题