一、选择题

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开源框架考试题的更多相关文章

  1. SSH开源框架的优缺点

    js+servlet+javabean的开发模式需要写很多的重复代码,比如固定的doGet()方法,而且它的控制跳转不灵活,往往一个问题处理需要两个.java文件,而且当采用MVC模式开发时有很大的耦 ...

  2. 新手SSH基础框架搭建

    SSH 为 struts+spring+hibernate的一个集成框架,是目前较流行的一种Web应用程序开源框架. 首先我们先了解SSH的框架所需的包和基本概念: 一.下面我们先来了解一下strut ...

  3. Pyhton开源框架(加强版)

    info:Djangourl:https://www.oschina.net/p/djangodetail: Django 是 Python 编程语言驱动的一个开源模型-视图-控制器(MVC)风格的 ...

  4. Python开源框架

    info:更多Django信息url:https://www.oschina.net/p/djangodetail: Django 是 Python 编程语言驱动的一个开源模型-视图-控制器(MVC) ...

  5. Jeasyframe 开源框架 稳定版 V1.5 发布

    这是Jeasyframe开源框架的第一个稳定版本,感谢一起帮忙测试并给予反馈的网友们. 框架官网:http://www.jeasyframe.org/ 产品介绍: Jeasyframe开源框架是基于S ...

  6. 分布式计算开源框架Hadoop入门实践

    目录(?)[+] Author :岑文初 Email: wenchu.cenwc@alibaba-inc.com msn: cenwenchu_79@hotmail.com blog: http:// ...

  7. C++的一些不错开源框架,可以学习和借鉴

    from https://www.cnblogs.com/charlesblc/p/5703557.html [本文系外部转贴,原文地址:http://coolshell.info/c/c++/201 ...

  8. IOS-常用第三方开源框架介绍

    iOS开发-常用第三方开源框架介绍(你了解的ios只是冰山一角) 时间:2015-05-06 16:43:34      阅读:533      评论:0      收藏:0      [点我收藏+] ...

  9. iOS开发-常用第三方开源框架介绍

    iOS开发-常用第三方开源框架介绍 图像: 1.图片浏览控件MWPhotoBrowser        实现了一个照片浏览器类似 iOS 自带的相册应用,可显示来自手机的图片或者是网络图片,可自动从网 ...

随机推荐

  1. xampp install

    the way of restart: sudo /opt/lampp/lampp restart config root: /opt/lampp/etc/httpd.conf /opt/lampp/ ...

  2. asp.net管道模型

    查了很多资料,终于大概弄懂管道模型(注意并非指定是asp.net范畴)是个什么概念了,其实就是从Unix移植过来的一种概念,也可以说是一种模式吧(只允许一头读,一头写,并且读完了就会自动消失). as ...

  3. JVM 学习笔记(一)

    JVM  ----Java  Virtual Machine   (熟称:JAVA虚拟机),JVM 在执行JAVA程序的过程中将内容划分为若干个区域,其有各自的用途和管理机制.如下图: 1.  程序计 ...

  4. form表单提交的方法

    最近研究了下html中,form保单提交的几种方法,现与大家分享一下(注:网上可能已经有好多版本了,这里自己写下来做个总结了,哈!): 方法一:利用form的onsubmit()函数(经常使用) &l ...

  5. python学习之---函数进阶

    一,递归函数: 做程序应该都知道,在一个函数的内部还可以调用其它函数,这叫函数的调用,但是有一种特殊的情况,在一个函数内部对自身函数的调用,我们成这为函数的递归调用. 在此,使用一个家喻户晓的例子来演 ...

  6. uva 1308 - Viva Confetti

    这个题目的方法是将圆盘分成一个个圆环,然后判断这些圆环是否被上面的圆覆盖: 如果这个圆的圆周上的圆弧都被上面的覆盖,暂时把它标记为不可见: 然后如果他的头上有个圆,他有个圆弧可见,那么他自己本身可见, ...

  7. hdu 1827

    强连通分量——tarjin算法: 这题的思路就是找出多少个出度为0的连通分量,结果就是这些连通分量的元素的最小值相加: 一道很简单的题,改了我好久,= =!~ 贴代码: #include<cst ...

  8. 【BZOJ 3110】 [Zjoi2013]K大数查询(整体二分)

    [题目] Description 有N个位置,M个操作.操作有两种,每次操作如果是1 a b c的形式表示在第a个位置到第b个位置,每个位置加入一个数c如果是2 a b c形式,表示询问从第a个位置到 ...

  9. Learning WCF Chapter2 WCF Contracts and Serialization

    So far I’ve talked about the standards behind it all,but in fact WCF hides most of this from the dev ...

  10. linux字符图形界面

    /etc/inittab 1)  字符界面标识: id:3:initdefault: 2)  图形界面标识: id:5:initdefault:   [root@ora9i ~]# vi /etc/i ...