SSH开源框架考试题
一、选择题
1、不属于Action接口中定义的字符串常量的是____B___。
A.SUCCESS B.FAILURE
C.ERROR D.INPUT
2、在控制器类中一般需要添加相应属性的______A_____和____C_______。
A.setter方法 B.as方法
C.getter方法 D.is方法
3、控制器需要在____B_______配置文件中进行配置。
A.web.xml B.struts.xml
C.struts2.xml D.webwork.xml
4、不属于Struts 2表单标签库的是_____D______。
A.<s: textfield > B.<s: textarea >
C.<s: submit > D.<select>
5、在JSP页面中可以通过Struts 2提供的____D_______标签来输出国际化信息。
A.<s: input > B.<s: texts >
C.<s: submit > D.<s:text>
6、资源文件的后缀名为_____D______。
A.txt B.doc
C.property D.Properties
7、下面关于“依赖注入”的说法,错误的是____D_____。
A.将组件间的依赖关系采取配置文件的方式管理,而不是硬编码在代码中
B.降低了组件间的耦合,使程序更容易维护和升级
C.促进了“面向接口”编程,使构建大规模程序更轻松
D.需要定义大量接口,增加了编码复杂度
8、关于Spring的说法错误的是___C_____。
A.通过setter方法实现依赖注入
B.对Hibernate提供了支持,可简化Hibernate编码
C.通过AOP可以轻松与Hibernate集成
D.通过AOP实现了声明式事务管理
9、关于Spring AOP,下面说法错误的是____C_________。
A.支持前置通知、后置通知、环绕通知
B.采用代理的方式实现
C.在Spring2.0以前的版本中通过<aop:config>、<aop:pointcut>和<aop:advisor>配置
D.与“依赖注入”实现紧密结合
10、对下面Spring声明式事务的配置含义的说明错误的是_____C_______。
<bean id="txProxyTemplate" abstract="true"
class=
"org.springframework.transaction.interceptor.TransactionProxyFactoryBean">
<property name="transactionManager" ref="myTransactionManager" />
<property name="transactionAttributes">
<props>
<prop key="get*">PROPAGATION_REQUIRED,readOnly</prop>
<prop key="*">PROPAGATION_REQUIRED</prop>
</props>
</property>
</bean>
A.定义了声明式事务的配置模板
B.对get方法采用只读事务
C.缺少sessionFactory属性的注入
D.配置需要事务管理的bean的代理时,通过parent引用这个配置模板,代码如下:
<bean id="petBiz" parent="txProxyTemplate">
<property name="target" ref="petTarget"/></bean>
11.对于以下程序,Customer对象在第几行变为游离状态?( D )
Customer customer=new Customer(); //line1
customer.setName(\"Tom\"); //line2
Session session1=sessionFactory.openSession(); //line3
Transaction tx1 = session1.beginTransaction(); //line4
session1.save(customer); //line4
tx1.commit(); //line5
session1.close(); //line6
(A)line1
(B)line3
(D)line6
12.以下哪一种检索策略利用了外连结查询?( C )
(A)立即检索
(B)延迟检索
(C)迫切左外连结检索
(D)迫切右外连结检索
13.关于HQL与SQL,以下哪些说法正确?( B )
(A)HQL与SQL没什么差别
(B)HQL面向对象,而SQL操纵关系数据库
(C)在HQL与SQL中,都包含select,insert,update,delete语句
(D)HQL仅用于查询和删除数据,不支持insert,update语句
14.事务隔离级别是由谁实现的?( C )
(A)Java应用程序
(B)Hibernate
(C)数据库系统
(D)JDBC驱动程序
15.使用映射文件映射联合主键时,以下哪个选项不是持久化类必须满足的条件( D )
(A)实现java.io.Serializable接口;
(B)覆盖hashCode()方法;
(C)覆盖equals()方法;
(D)覆盖links()方法。
16.下面关于hibernate核心接口说明错误的是?( B )
(A)Configuration 接口:配置Hibernate,根据其启动hibernate,创建SessionFactory 对象;
(B)SessionFactory 接口:负责保存、更新、删除、加载和查询对象,是线程不安全的,避免多个线程共享同一个session,是轻量级、一级缓存
(C)Query 和Criteria 接口:执行数据库的查询。
(D)Transaction 接口:管理事务;
17.以下程序代码对Customer的name属性修改了两次:
tx = session.beginTransaction();
Customer customer=(Customer)session.load(Customer.class,new Long(1));
customer.setName(\"Jack\");
customer.setName(\"Mike\");
tx.commit();
执行以上程序,Hibernate需要向数据库提交几条update语句?( B )
(A)0
(B)1
(C)2
(D)3
18.在Struts应用的视图中包含哪些组件? (A )
(A)JSP
(B)Servlet
(C)ActionServlet
(D)Action
19.分析下面SQL语句,在什么情况下将引起这个语句失败?( C )
STUDENT表结构:
ID NUMBER(9) FIRST_NAME VARCHAR2(25) LAST_NAME VARCHAR2(25)
SELECT * FROM student WHERE id =
(SELECT id FROM student
WHERE UPPER(first_name) = ‘KATE’ AND UPPER(last_name) =‘HENRY’);
(A)There are no students named Kate Henry.
(B)There is more than one student named Kate.
(C)There is more than one student named Kate Henry.
(D)The FIRST_NAME and LAST_NAME values in the database are in lowercase.
创建STUDENT表的语句如下:
① CREATE TABLE student(empleyee_id NUMBER(9)
② CONSTRAINT salary_pk PRIMARY KEY,
③ 1995_salsry NUMBER(8,2),
④ manager_name VARCHAR2(25) CONSTRAINT mgr_name_nn NOT NULL,
salary_96 NUMBER(8,2));
这个语句产生错误的地方是在第几行?( C )
(A)①
(B)②
(C)③
(D)④
1.一般情况下,以下哪个选项不是关系数据模型与对象模型之间匹配关系:( D )
(A)表对应类
(B)记录对应对象
(C)表的字段对应类的属性
(D)表之间的参考关系对应类之间的依赖关系
、以下关于SessionFactory的说法哪些正确?( C )
(A)对于每个数据库事务,应该创建一个SessionFactory对象
(B)一个SessionFactory对象对应多个数据库存储源。
(C)SessionFactory是重量级的对象,不应该随意创建。如果系统中只有一个数据库存储源,只需要创建一个。
(D)SessionFactory的load()方法用于加载持久化对象
3、Customer类中有一个Set类型的orders属性,用来存放Order订单对象,在
Customer.hbm.xml文件中,用哪个元素映射orders属性?( A )
(A)<set>
(B)<one-to-many>
(C)<many-to-one>
(D)<property>
4、<set>元素有一个cascade属性,如果希望Hibernate级联保存集合中的对象,casecade
属性应该取什么值?( D )
(A)none
(B)save (无)
(C)delete
(D)save-update
5、以下哪个不属于Session的方法?( D )
(A)save()
(B)delete()
(C)update()
(D)open()
三、简单题(每题8分共计40分)
1、简述什么是MVC?
MVC全名是Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写,一种软件设计典范,用于组织代码用一种业务逻辑和数据显示分离的方法。“模型”也称业务逻辑,是正真完成任务的代码,相当与JavaBean;视图,就是显示界面,相当于JSP:控制器,他控制模型和视图的交互过程,相当于servlet。
2、spring的事务有几种方式?谈谈spring事务的隔离级别和传播行为。
spring事务有两种方式,分别是:声明式事务和编程式事务.
隔离级别:
- DEFAULT使用数据库默认的隔离级别
- READ_UNCOMMITTED会出现脏读,不可重复读和幻影读问题
- READ_COMMITTED会出现重复读和幻影读
- REPEATABLE_READ会出现幻影读
- SERIALIZABLE最安全,但是代价最大,性能影响极其严重
传播行为:
- REQUIRED存在事务就融入该事务,不存在就创建事务
- SUPPORTS存在事务就融入事务,不存在则不创建事务
- MANDATORY存在事务则融入该事务,不存在,抛异常
- REQUIRES_NEW总是创建新事务
- NOT_SUPPORTED存在事务则挂起,一直执行非事务操作
- NEVER总是执行非事务,如果当前存在事务则抛异常
- NESTED嵌入式事务
3.谈谈hibernate的延迟加载和openSessionInView
延迟加载要在session范围内,用到的时候再加载;opensessioninview是在web层写了一个filter来打开和关闭session,这样就表示在一次request过程中session一直开着,保证了延迟加载在session中的这个前提。
4.用自己的话简要阐述struts2的执行流程。
Struts 2框架本身大致可以分为3个部分:核心控制器FilterDispatcher、业务控制器Action和用户实现的企业业务逻辑组件。
核心控制器FilterDispatcher是Struts 2框架的基础,包含了框架内部的控制流程和处理机制。
业务控制器Action和业务逻辑组件是需要用户来自己实现的。用户在开发Action和业务逻辑组件的同时,还需要编写相关的配置文件,供核心控制器FilterDispatcher来使用。
Struts 2的工作流程相对于Struts 1要简单,与WebWork框架基本相同,所以说Struts 2是WebWork的升级版本。基本简要流程如下:
1)、客户端浏览器发出HTTP请求。
2)、根据web.xml配置,该请求被FilterDispatcher接收。
3)、根据struts.xml配置,找到需要调用的Action类和方法,并通过IoC方式,将值注入给Aciton。
4)、Action调用业务逻辑组件处理业务逻辑,这一步包含表单验证。
5)、Action执行完毕,根据struts.xml中的配置找到对应的返回结果result,并跳转到相应页面。
6)、返回HTTP响应到客户端浏览器。
5、请你谈谈对struts2、hibernate、spring整合的理解。
Struts是一个基于Sun J2EE平台的MVC框架,主要是采用Servlet和JSP技术来实现的,Struts负责Web层。
Spring控制反转,面向切面,它的架构基础是基于使用JavaBean属性的Inversion of Control容器,提供了管理业务对象的一致方法,并鼓励注入对接口编程而不是对类编程的良好习惯,使我们的产品在最大程度上解耦,Spring负责业务层管理,即Service。
Hibernate是一个开放源代码的对象关系映射框架,是用来持久化数据的,提供了完全面向对象的数据库操作。对JDBC进行了对象封装,可以随心所欲的使用对象编程思维来操纵数据库,Hibernate负责持久层,完成数据库的CRUD操作。
6.Hibernate有哪几种查询数据的方式
(1) 使用主键id加载对象(load(),get());
(2) 通过对象导航,比如通过stu.getTeam()得到team的实例;
(3)HQL
(4)QBC (query by criteria)
(5)本地SQL
7、Hibernate中load()和get()的区别通过如下代码进行阐述
load加载方法:
Java代码
Users user = (Users)session.load(Users.class, userId);
Users user = (Users)session.load(Users.class, userId);
get加载方法:
Java代码
Users user = (Users)session.get(Users.class, userId);
Users user = (Users)session.get(Users.class, userId);
区别1:如果数据库中,没有userId的对象。
通过get方法加载,则返回的是一个null;
通过load加载,则返回一个代理对象
区别2:load支持延迟加载,get不支持延迟加载。
也就是说:
Java代码
Users user = (Users)session.load(Users.class, userId);
Users user = (Users)session.load(Users.class, userId);
这句代码不会去执行数据库查询,只有用到user时才会去执行数据库查询。
而:
Java代码
Users user = (Users)session.get(Users.class, userId);
Users user = (Users)session.get(Users.class, userId);
则立即去执行数据库查询。注意:
Java代码
Users user = (Users)session.load(Users.class, userId);
Users user = (Users)session.load(Users.class, userId);
这2句代码,不会去执行数据库操作。因为load后会在hibernate的一级缓存里存放一个map对象,该map的key就是userId的值,但是当你getId()时,它会去一级缓存里拿map的key值,而不去执行数据库查询。所以不会报任何错。不会执行任何数据库操作。
SSH开源框架考试题的更多相关文章
- SSH开源框架的优缺点
js+servlet+javabean的开发模式需要写很多的重复代码,比如固定的doGet()方法,而且它的控制跳转不灵活,往往一个问题处理需要两个.java文件,而且当采用MVC模式开发时有很大的耦 ...
- 新手SSH基础框架搭建
SSH 为 struts+spring+hibernate的一个集成框架,是目前较流行的一种Web应用程序开源框架. 首先我们先了解SSH的框架所需的包和基本概念: 一.下面我们先来了解一下strut ...
- Pyhton开源框架(加强版)
info:Djangourl:https://www.oschina.net/p/djangodetail: Django 是 Python 编程语言驱动的一个开源模型-视图-控制器(MVC)风格的 ...
- Python开源框架
info:更多Django信息url:https://www.oschina.net/p/djangodetail: Django 是 Python 编程语言驱动的一个开源模型-视图-控制器(MVC) ...
- Jeasyframe 开源框架 稳定版 V1.5 发布
这是Jeasyframe开源框架的第一个稳定版本,感谢一起帮忙测试并给予反馈的网友们. 框架官网:http://www.jeasyframe.org/ 产品介绍: Jeasyframe开源框架是基于S ...
- 分布式计算开源框架Hadoop入门实践
目录(?)[+] Author :岑文初 Email: wenchu.cenwc@alibaba-inc.com msn: cenwenchu_79@hotmail.com blog: http:// ...
- C++的一些不错开源框架,可以学习和借鉴
from https://www.cnblogs.com/charlesblc/p/5703557.html [本文系外部转贴,原文地址:http://coolshell.info/c/c++/201 ...
- IOS-常用第三方开源框架介绍
iOS开发-常用第三方开源框架介绍(你了解的ios只是冰山一角) 时间:2015-05-06 16:43:34 阅读:533 评论:0 收藏:0 [点我收藏+] ...
- iOS开发-常用第三方开源框架介绍
iOS开发-常用第三方开源框架介绍 图像: 1.图片浏览控件MWPhotoBrowser 实现了一个照片浏览器类似 iOS 自带的相册应用,可显示来自手机的图片或者是网络图片,可自动从网 ...
随机推荐
- Vim粘贴代码时缩进混乱
Vim粘贴代码时缩进混乱 via 背景 在终端Vim中粘贴代码时,发现插入的代码会有多余的缩进,而且会逐行累加.原因是终端把粘贴的文本存入键盘缓存(Keyboard Buffer)中,Vim则把这些内 ...
- POJ 1472 Instant Complexity 应该叫它编程题。。
题目:http://poj.org/problem?id=1472 这个题目是分到“模拟题”一类的,我觉得模拟的成分比较少,主要考察编程能力.独立写完这个题特别兴奋...所以我必须好好说一说,独家哦. ...
- AppDelegate解析
当我们创建一个iOS项目,默认会有main.m类,这是一个程序的主入口.main.m方法体如下: #import <UIKit/UIKit.h> #import "AppDele ...
- Duplicate Symbol链接错的原因总结和解决方法-b
duplicate symbol是一种常见的链接错误,不像编译错误那样可以直接定位到问题的所在.但是经过一段时间的总结,发现这种错误总是有一些规律可以找的.例如,我们有如下的最简单的两个类代码: // ...
- 《无懈可击的Web设计》_灵活的文字
常见的方法 body{ font-size:12px; } 使用像素单位的优点: 不管使用哪种浏览器或者设备来查看,文字看起来都大小一致. 为什么这么做不是无懈可击的? 以像素为单位设定文字大小之后, ...
- JavaScript学习代码整理(一)
/** * Created by wyl on 15-1-23. */ function displayDate() { document.getElementById("demo" ...
- uva 12097 - Pie
简单题,二分就行: #include<cstdio> #include<cmath> #define pi acos(-1.0) #define eps 0.000001 #d ...
- Mongodb数据更新命令
一.Mongodb数据更新命令 Mongodb更新有两个命令:update.save. 1.1update命令 update命令格式: db.collection.update(criteria,ob ...
- 解析Android开发优化之:对Bitmap的内存优化详解
在Android应用里,最耗费内存的就是图片资源.而且在Android系统中,读取位图Bitmap时,分给虚拟机中的图片的堆栈大小只有8M,如果超出了,就会出现OutOfMemory异常.所以,对于图 ...
- laravel 框架学习资料
demo:http://forumsarchive.laravel.io/viewtopic.php?id=3536 使用Laravel和Angular创建一个单页的评论应用 http://devel ...