一、选择题

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. http协议请求规则与dotNet的解析

    请求方法URI协议/版本 请求的第一行是"方法URL议/版本":GET/sample.jsp HTTP/1.1 以上代码中"GET"代表请求方法,"/ ...

  2. 第 9 章 模板方法模式【Template Method Pattern】

    以下内容出自:<<24种设计模式介绍与6大设计原则>> 周三,9:00,我刚刚坐到位置,打开电脑准备开始干活. “小三,小三,叫一下其它同事,到会议室,开会”老大跑过来吼,带着 ...

  3. bzoj 3283: 运算器 扩展Baby Step Giant Step && 快速阶乘

    3283: 运算器 Time Limit: 20 Sec  Memory Limit: 256 MBSubmit: 184  Solved: 59[Submit][Status][Discuss] D ...

  4. Android之单复选框及Spinner实现二级联动

    一.基础学习 1.图形学真的很神奇啊....查了些资料做出了3D云标签,哈哈...其实直接拿来用的,我们要效仿鲁迅先生的拿来主义,嘿嘿~~3D标签云就是做一个球面,然后再球面上取均匀分布的点,把点坐标 ...

  5. 【Tools】Chrome开发者工具详解

    作为一名前端开发者,打交道最多的可能是和浏览器.市面上各种浏览器多不胜数,主流的有Chrome,Firefox,Safari,IE,Opera,非主流的如360,遨游,QQ浏览器,搜狗浏览器,据说淘宝 ...

  6. js node

    http://blogs.msdn.com/b/scott_hanselman/archive/2011/11/29/window-iis-node-js.aspx http://www.16kan. ...

  7. 【 CodeForces - 392C】 Yet Another Number Sequence (二项式展开+矩阵加速)

    Yet Another Number Sequence Description Everyone knows what the Fibonacci sequence is. This sequence ...

  8. warning: push.default is unset;

    git push warning questions This warning was introduced in Git 1.7.11 along with the simple style of ...

  9. Learning WCF Chapter1 Exposing Multiple Service Endpoints

    So far in this chapter,I have shown you different ways to create services,how to expose a service en ...

  10. POJ_3280_Cheapest_Palindrome_(动态规划)

    描述 http://poj.org/problem?id=3280 n 种小写字母构成长度为 m 的串,现在要通过增删字母使串回文,给出每种字母增和删的费用,求最小花费. Cheapest Palin ...