SSH开源框架考试题

一、选择题

1、不属于Action接口中定义的字符串常量的是____B___

ASUCCESS                              BFAILURE

CERROR                                DINPUT

 

2、在控制器类中一般需要添加相应属性的______A_________C_______

Asetter方法                             Bas方法

Cgetter方法                             Dis方法

 

3、控制器需要在____B_______配置文件中进行配置。

Aweb.xml                               Bstruts.xml

Cstruts2.xml                             Dwebwork.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______

Atxt                      Bdoc                

Cproperty                 DProperties

 

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

Aline1   

Bline3   

Dline6

 

12.以下哪一种检索策略利用了外连结查询?( C

A)立即检索

B)延迟检索

C)迫切左外连结检索

D)迫切右外连结检索

 

13.关于HQLSQL,以下哪些说法正确?( B

AHQLSQL没什么差别

BHQL面向对象,而SQL操纵关系数据库

C)在HQLSQL中,都包含select,insert,update,delete语句

DHQL仅用于查询和删除数据,不支持insert,update语句

 

14.事务隔离级别是由谁实现的?( C

AJava应用程序  

BHibernate 

C)数据库系统 

DJDBC驱动程序

 

15.使用映射文件映射联合主键时,以下哪个选项不是持久化类必须满足的条件(

A)实现java.io.Serializable接口;

B)覆盖hashCode()方法;

C)覆盖equals()方法;

D)覆盖links()方法。

 

16.下面关于hibernate核心接口说明错误的是?( B

AConfiguration 接口:配置Hibernate,根据其启动hibernate,创建SessionFactory 对象;

BSessionFactory 接口:负责保存、更新、删除、加载和查询对象,是线程不安全的,避免多个线程共享同一个session,是轻量级、一级缓存

CQuery Criteria 接口:执行数据库的查询。

DTransaction 接口:管理事务;

 

17.以下程序代码对Customername属性修改了两次:

       tx = session.beginTransaction();

       Customer customer=(Customer)session.load(Customer.class,new Long(1));

       customer.setName("Jack");

       customer.setName("Mike");

       tx.commit();

       执行以上程序,Hibernate需要向数据库提交几条update语句?( B

A0            

B1             

C2            

D3

 

18.Struts应用的视图中包含哪些组件?

AJSP

BServlet

CActionServlet

DAction

 

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’);

AThere are no students named Kate Henry.

BThere is more than one student named Kate.

CThere is more than one student named Kate Henry.

DThe FIRST_NAME and LAST_NAME values in the database are in lowercase. 

 

20创建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)表之间的参考关系对应类之间的依赖关系

 

2、以下关于SessionFactory的说法哪些正确?( C

A)对于每个数据库事务,应该创建一个SessionFactory对象

B)一个SessionFactory对象对应多个数据库存储源。

CSessionFactory是重量级的对象,不应该随意创建。如果系统中只有一个数据库存储源,只需要创建一个。

DSessionFactoryload()方法用于加载持久化对象

 

3Customer类中有一个Set类型的orders属性,用来存放Order订单对象,在

Customer.hbm.xml文件中,用哪个元素映射orders属性?(

A<set>    

B<one-to-many> 

C<many-to-one>  

D<property>

 

4<set>元素有一个cascade属性,如果希望Hibernate级联保存集合中的对象,casecade

属性应该取什么值?( D

Anone

Bsave  ()

Cdelete

Dsave-update

 

5、以下哪个不属于Session的方法?(

Asave()

Bdelete()

Cupdate()

Dopen()

 

三、简单题(每题8分共计40)

1、简述什么是MVC

 

    MVC全名是Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写,一种软件设计典范,用于组织代码用一种业务逻辑和数据显示分离的方法。“模型”也称业务逻辑,是正真完成任务的代码,相当与JavaBean;视图,就是显示界面,相当于JSP:控制器,他控制模型和视图的交互过程,相当于servlet

 

2spring的事务有几种方式?谈谈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和用户实现的企业业务逻辑组件。

核心控制器FilterDispatcherStruts 2框架的基础,包含了框架内部的控制流程和处理机制。

业务控制器Action和业务逻辑组件是需要用户来自己实现的。用户在开发Action和业务逻辑组件的同时,还需要编写相关的配置文件,供核心控制器FilterDispatcher来使用。

Struts 2的工作流程相对于Struts 1要简单,与WebWork框架基本相同,所以说Struts 2WebWork的升级版本。基本简要流程如下:

1)、客户端浏览器发出HTTP请求。

2)、根据web.xml配置,该请求被FilterDispatcher接收。

3)、根据struts.xml配置,找到需要调用的Action类和方法,并通过IoC方式,将值注入给Aciton

4)Action调用业务逻辑组件处理业务逻辑,这一步包含表单验证。

5)Action执行完毕,根据struts.xml中的配置找到对应的返回结果result,并跳转到相应页面。

6)、返回HTTP响应到客户端浏览器。

 

5、请你谈谈对struts2hibernatespring整合的理解。

 

Struts是一个基于Sun J2EE平台的MVC框架,主要是采用ServletJSP技术来实现的,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

7Hibernateload()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加载,则返回一个代理对象

区别2load支持延迟加载,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对象,该mapkey就是userId的值,但是当你getId()时,它会去一级缓存里拿mapkey值,而不去执行数据库查询。所以不会报任何错。不会执行任何数据库操作。

 

 

原文地址:https://www.cnblogs.com/yangkai-cn/p/4016813.html