zoukankan      html  css  js  c++  java
  • 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值,而不去执行数据库查询。所以不会报任何错。不会执行任何数据库操作。

     

     

  • 相关阅读:
    sql语句中in和exists的区别
    springboot整合kafka
    多线程基础(三)线程通信
    多线程基础(四)线程控制
    多线程基础(二)线程状态
    创建计算字段
    MySQL学习之正则表达式篇
    response没有实现跳转,而是提示浏览器下载文件
    AJAX简述
    四大作用域
  • 原文地址:https://www.cnblogs.com/snake-hand/p/3181489.html
Copyright © 2011-2022 走看看