一J2EE复习资料资料.docx
《一J2EE复习资料资料.docx》由会员分享,可在线阅读,更多相关《一J2EE复习资料资料.docx(11页珍藏版)》请在冰豆网上搜索。
一J2EE复习资料资料
一、填空题复习:
P1P4P18-19P35P40P54P62P82-83P127P119P122
二、单选题复习
1.如果你已知某个实例的持久化标识,你可以使用Session的_____方法来获取它(A)
A) load() B) loadAll() C) getAllData() D) init()
2.如果你不能确定你要寻找的对象的持久化标识符,那么你需要使用查询,使用Session的____方法( A)
A) createQuery() B) query() C) queryAll() D) queryObject()
3.使用Session的____会把对象的状态从数据库中移除( A)
A) delete() B) remove() C) clear() D) removeAll()
4.对原生SQL查询的控制是通过___接口进行的。
(A )
A) SQLQuery B) Session C) List D) Query
5.使用Hibernate的QBC查询,要使用SQL中的类似select count(*) from tablename方法求出记录数,必须使用哪一个类。
(B)
A) Restrictions B) Projections C) Criteria D) Criteron
6.在Hibernate中,关于数据库的方言,下面哪个说法是正确的(D )
A) 可以不写数据库方言 B) 数据库方言没有作用,可以随便写
C) 有通用的数据库方言可以使用 D) 数据方言对应于每个数据库,主要用于产生SQL语句
7.下面不属于持久化的是(A )
A) 把对象转换称字符串的形式通过网络传输,在另一端接收到这个字符串后能把对象还原出来
B) 把程序数据从数据库中读出来
C) 从XML配置文件中读取程序的配置信息
D) 把程序数据保存为文件
8.下面的程序执行后没有报错,但数据总保存不到数据库,最可能的原因是(E)
public static void imain(String[] args){
SessionFactory sf=new Configration().configure().buildSessionFactory();
Session session=sf.openSession();
Medal medal=new Medal();
medal.setOwner(“totong”);
medal.setType(“Gold medal”);
session.save(user);
session.close();
}
A) 配置文件配置有误
B) 没有在配置文件中包含对映射文件的声明
C) 配置文件配置有误
D) 没有对持久化操作捕捉异常
E) 没有开启事务
9.已知wage.getItem().size()的值是1。
要想使执行session.update(wage)时自动执行session.update(wage.getItems().get(0)),必须配置( D)
A)…
B)…
C)…
D)…
10.关于spring说法错误的(D)
A) Spring是一个轻量级JAVA EE的框架集合
B) Spring包含一个“依赖注入”模式的实现
C) 使用Spring可以实现声明事务
D) Spring提供了AOP方式的日志系统
11.依赖注入说法正确的(A)
A) 依赖注入的目标是在代码之外管理程序组建间的依赖关系
B) 依赖注入即是“面向接口”的编程
C) 依赖注入是面向对象技术的替代品
D) 依赖注入的使用会增大程序的规模
12.在三层结构中,数据访问层承担的责任是(B)
a)定义实体类
b)数据的增删改查操作
c)业务逻辑的描述
d)页面展示和控制转发
13.下面关于数据持久化概念的描述,错误的是(D)
a)保存在内存中数据的状态是瞬时状态
b)持久状态的数据在关机后数据依然存在
c)数据可以由持久状态转换为瞬时状态
d)将数据转换为持久状态的机制称为数据持久化
14.下面关于Hibernate的说法,错误的是(C)
a)Hibernate是一个“对象-关系映射”的实现
b)Hibernate是一种数据持久化技术
c)Hibernate是JDBC的替代技术
d)使用Hibernate可以简化持久化层的编码
15.在Hibernate关系映射配置中,inverse属性的含义是(B)。
a)定义在节点上,声明要负责关联的维护
b)声明在节点上,声明要对方负责关联的维护
c)定义在节点上,声明对方要负责关联的维护
d)声明在节点上,声明要负责关联的维护
16.在使用了Hibernate的系统中,要想在删除某个客户数据的同时删除该客户对应的所有订单数据,下面方法可行的是(B)。
a)配置客户和订单关联的cascade属性为save-update
b)配置客户和订单关联的cascade属性为all
c)设置多对一关联的inverse属性为true
d)设置多对一关联的inverse属性为false
17.执行下面的hql查询,关于返回值的说法,正确的是(B)。
selectu.username,u.userid
fromcom.x.entity.Useru
whereuisnotnull
a)语法错误,不能执行
b)返回一个类型为List的实例
c)返回一个数组
d)当返回结果只有一条时,返回一个数组
18.下面创建Criteria对象的语句中正确的是(D)。
a)Criteriac=query.createCriteria();
b)Criteriac=query.addCriteria();
c)Criteriac=session.createCriteria();
d)Criteriac=session.createCriteria(User.class);
19.元素有一个cascade属性,如果希望Hibernate级联保存集合中的对象,casecade属性应该取什么值?
(D)
a)none
b)save
c)delete
d)save-update
20.以下程序的打印结果是什么?
(C)
tx=session.beginTransaction();
Customerc1=(Customer)session.load(Customer.class,newLong
(1));
Customerc2=(Customer)session.load(Customer.class,newLong
(1));
System.out.println(c1==c2);
mit();
session.close();
a)运行出错,抛出异常
b)打印false
c)打印true
d)编译出错
21.以下程序代码对Customer的name属性修改了两次:
(B)
tx=session.beginTransaction();
Customercustomer=(Customer)session.load(Customer.class,
newLong
(1));
customer.setName(\"Jack\");
customer.setName(\"Mike\");
mit();
执行以上程序,Hibernate需要向数据库提交几条update语句?
a)0
b)1
c)2
22.关于AOP错误的(C)
A) AOP将散落在系统中的“方面”代码集中实现
B) AOP有助于提高系统可维护性
C) AOP已经表现出将要替代面向对象的趋势
D) AOP是一种设计模式,Spring提供了一种实现
23.关于Spring AOP错误的(A)
A) 首先要编写方面代码,实现MethodBeforeAdvice接口
B) AOP采取拦截方法调用方式实现,可以在调用方法前.后,抛出异常时拦截
C) AOP采取代理的方式实现,常用代理对象的类别为
org.springframework.aop.framework.ProxyFactoryBean
D) AOP可以在对目标(target)不做任何修改的情况下增加程序功能
24.不属于Action接口中定义的字符串常量的是(B)。
A) SUCCESS B) FAILURE C) ERROR D) INPUT
25.控制器需要在____配置文件中进行配置。
(A)
A) web.xml B) struts.xml C) struts2.xml D) webwork.xml
26.不属于Struts2表单标签库的是。
(D)
A) textfield> B)textarea> C)submit>D)
27.在JSP页面中可以通过Struts2提供的___标签来输出国际化信息。
(D)
A) input> B)texts> C)submit> D) text>
28.在Hibernate主配置文件(hibernate.cfg.xml)中,是通过哪个元素来配置映射文件的 。
(D)
A)元素 B)元素
C)元素 D)元素
29.下面关于Hibernate的映射文件说法正确的有哪些。
(D)
A)Hibernate是以xml格式的文件来指定对象与关系数据之间的映射
B)在hibernate.cfg.xml文件中可以配置 元素的resource 属性来指定映射文件。
C)配置映射文件时,需要遵循它对应的DTD文件格式
D)以上都正确
30.如何理解SessionFactory与Session的关系及它们的意义。
(D)
A)SessionFactory的主要用来生成Session对象
B)SessionFactory是一个重量级的对象,一个应用程序只创建一个SessionFactory实例,而可创建多个Session对象。
C)SessionFactory实例代表一个所要访问的数据库
D)都正确
31.如何理解SessionFactory与Session的关系及它们的意义 。
(D)
A)SessionFactory的主要用来生成Session对象
B)SessionFactory是一个重量级的对象,一个应用程序只创建一个SessionFactory实例,而可创建多个Session对象。
C)SessionFactory实例代表一个所要访问的数据库
D)都正确
三.简答题复习
1.Hibernate有哪5个核心接口?
它们的作用分别是什么?
答:
Configuration接口:
配置Hibernate,根据其启动hibernate,创建SessionFactory对象;SessionFactory接口:
初始化Hibernate,充当数据存储源的代理,创建session对象,sessionFactory是线程安全的,意味着它的同一个实例可以被应用的多个线程共享,是重量级.二级缓存;Session接口:
负责保存.更新.删除.加载和查询对象,是线程不安全的,避免多个线程共享同一个session,是轻量级.一级缓存;Transaction接口:
管理事务;Query和Criteria接口:
执行数据库的查询。
2.什么是ORM?
答:
对象关系映射(Object—RelationalMapping,简称ORM)是一种为了解决面向对象与面向关系数据库存在的互不匹配的现象的技术;简单的说,ORM是通过使用描述对象和数据库之间映射的元数据,将java程序中的对象自动持久化到关系数据库中;本质上就是将数据从一种形式转换到另外一种形式。
3.解释数据持久化的好处?
答:
数据库的读写是一个很耗费时间和资源的操作,当大量用户同时直接访问数据库的时候,效率将非常低,如果将数据持久化就不需要每次从数据库读取数据,直接在内存中对数据进行操作,这样就节约了数据库资源,而且加快了系统的反映速度。
4.简述struts2文件上传的方法。
Commons FileUpload通过将HTTP的数据保存到临时文件夹,然后Struts使用fileUpload拦截器将文件绑定到Action的实例中。
从而我们就能够以本地文件方式的操作浏览器上传的文件。
5.如果不写action的后面mothod,默认的调用的方法是什么,如果写的话,写的时候有什么需要注意的?
(P20)
如果不写action的后面mothod,会使用默认的处理方法execute()来处理请求,在使用method属性的时候,由于在Action类中有多个业务逻辑处理方法,在配置Action时,就需要使用多个action元素。
6.请简述前台提交后是如何到达后台action的。
通过from表单action找到struts配置文件相应action的类 再去找相应action类里的方法
7.简述你对IoC(InversionofControl)的理解
一个类需要用到某个接口的方法,我们需要将类A和接口B的实现关联起来,最简单的方法是类A中创建一个对于接口B的实现C的实例,但这种方法显然两者的依赖(Dependency)太大了。
而IoC的方法是只在类A中定义好用于关联接口B的实现的方法,将类A,接口B和接口B的实现C放入IoC的容器(Container)中,通过一定的配置由容器(Container)来实现类A与接口B的实现C的关联。
8.Spring框架的优点都有什么?
Spring是分层的架构,你可以选择使用你需要的层而不用管不需要的部分
Spring是POJO编程,POJO编程使得可持续构建和可测试能力提高
依赖注入和IoC使得JDBC操作简单化
Spring是开源的免费的
Spring使得对象管理集中化合简单化
9.请说出Hibernate中持久化对象的生命周期以及各种状态直接的区别,并描述相互之间是如何转换的。
答:
Hibernate中持久化对象的生命周期有临时态.持久态和游离态三种。
处于临时态的对象主键值为空,并且未与session关联,数据未保存到数据库中处于持久态的对象与session关联起来,持久化后对象中的数据被保存到数据库中,并且主键值按照.hbm.xml文件中配置的生成方式生成相应的值处于游离态的对象脱离了session的管理,是持久化后的一种状态,主键值按照.hbm.xml文件中配置的生成方式生成相应的值当new一个新的对象时,该对象处于临时态当该对象被当作session的参数使用的时候,该对象处于持久态事务提交,session关闭后,该对象处于游离态。
四、设计题复习
(一)、使用域对象字段驱动方式写出一个登录注册界面程序及相关配置文件,包括设计以下内容:
1.实体域对象User.java的设计,设计其属性username及password。
2.设计UserLoginAction类,创建User类型的对象user以及其getter/setter方法,在execute()方法中获取ActionContext对象访问ServletAPI,对比从user对象中获取的用户名和密码来判断是否登陆成功。
3.设计userLogin.jsp,LoginSuccess.jsp,loginError.jsp。
4.在Struts.xml文件中设计userloginaction来控制项目的运行。
5.简述项目运行过程。
(二)、设计Hibernate项目,事项下图模型中的客户和订单之间的一对多的关联关系,
具体设计以下文件:
1.Customer.java客户的实体类。
2.Order.java订单的实体类。
3.Order.hbm.xml订单类的配置文件。
4.Customer.hbm.xml客户类的配置文件。
5.OneToManyTest.java测试类用于关联关系的测试。
(三)、设计一个自定义的拦截器,实现权限控制,具体如下:
1.创建User.java,用于处理用户登录的实体类。
2.设计LoginAction.java处理用户登录的Action类。
3.设计BookAction.java,书籍CRUD操作的Action类(演示即可,不用设计数据库处理方面的代码
4.设计拦截器PrivilegeInterceptor.java实现用户对书籍CRUD操作的权限控制,具体是:
登录用户可以进行书籍的CRUD操作,没有登录用户要求去登录,不能执行Book实体的CRDUD操作。
5.简述自定义拦截器工作的过程。