《JavaEE开发技术》课程考试试题(A卷)
题号 |
一 |
二 |
三 |
总分 |
||
得分 |
|
|
|
|
||
阅卷教师 |
|
|||||
统分人 |
|
复核人 |
|
一、单选题(每题3分,共30分)
1、Spring核心模块的作用(B)
A)做AOP的
B)做IOC的,用来管理Bean的
C)是用来支持Hibernete
D)是用来支持Struts的
2、对Struts的支持主要用到Spring的哪个模块(D)
A)Spring核心模块
B)Spring ORM模块
C)Spring MVC模块
D)Spring Web模块
3、对Hibernate的支持主要用到Spring的哪个模块(B)
A)Spring核心模块
B)Spring ORM模块
C)Spring MVC模块
D)Spring Web模块
4、下面关于BeanFactory接口说法正确的是(B)
A)BeanFactory是单例模式的实现,负责创建和管理bean
B)BeanFactory是工厂模式的实现,负责创建和管理bean
C)ApplicationContext类是它的实现类
D)以上说法都不对
5、下面关于Spring管理Bean的说法正确的是(B)
A)Bean在Spring容器中有两种管理方式,工厂模式和单例模式
B)Bean在 Spring容器中有两种管理方式,原型模式和单例模式
C)Spring默认的利用工厂模式管理Bean
D)Spring默认利用原型模式管理Bean
6、Spring的组成一共有(D)块组成。
A)1
B)3
C)5
D)7
7、Spring包装Hibernate之后的Hibernate的DAO应该继承那个类(C)
A)HibernateDAO
B)SessionFactory
- HibernateDAOSuport
D)Session
8、下面关于在Spring中配置Bean的init-method的说法正确的是(C)
A)init-method是在最前面执行的
- init-method在构造方法后,依赖注入前执行
- init-method在依赖注入之后执行
D)init-method在依赖注入之后,构造函数之前执行
9、Spring包装Hibernate之后,关于findByExample方法说法正确的是(B)
A)是根据对象来找,对象中有的属性都作为条件,包括主键,根据对象来动态的查询
- 是根据对象来找,对象中有的属性都作为条件,不包括主键,根据对象来动态的查询
- 是根据SQL语句来找
D)是根据HQL来找
10、下面关于BeanFactory接口说法正确的是(B)
A)BeanFactory是单例模式的实现,负责创建和管理bean
B)BeanFactory是工厂模式的实现,负责创建和管理bean
C)ApplicationContext类是它的实现类
D)以上说法都不对
二、多选题(每题3分,共30分,多选或者错选均不得分,少选得1分)
1、下面关于Spring的说法正确的是(B C)
A)Spring是一个重量级的框架
B)Spring是一个轻量级的框架
C)Spring是一个IOC和AOP容器
D)Spring是一个入侵式的框架
2、下面关于IOC的理解,正确的是(A B)
A)控制反转
- 对象被动的接受依赖类
- 对象主动的去找依赖类
- 一定要用接口
- 下面关于AOP的理解,正确的是(B C)
- 面向纵向的开发
- 面向横向的开发
- AOP关注是面
D)AOP关注的是点
4、Spring各模块之间关系(B C)
A)Spring各模块之间是紧密联系的,相互依赖的
B)Spring各模块之间可以单独存在
C) Spring的核心模块是必须的,其他模块是基于核心模块
- Spring的核心模块不是必须的,可以不要
5、Spring包装Struts时哪些Spring模块是必须的(A D)
- Spring核心模块
- Spring AOP模块
- Spring MVC模块
- Spring WEB模块
6、下面是Spring依赖注入方式的是(A B)
- set方法注入
- 构造方法的注入
C)get方法的注入
D)接口的注入
7、下面关于在Spring中配置Bean的id属性的说法正确的是(B D)
A)id属性是必须,没有id属性就会报错
B)id属性不是必须的,可以没有
C)id属性的值可以重复
D)id属性的值不可以重复
8、下面关于在Spring中配置Bean的name属性的说法正确的是(B D)
A)name属性是必须,没有name属性就会报错
B)name属性不是必须的,可以没有
C)name属性的值可以重复
D)name属性的值不可以重复
9、下面是IOC自动装载方法的是(A B)
A)byName
B)byType
C)constructor
D)byMethod
10、Spring包装Hibernate之后,能够来保存数据的方法有(A C)
A)save
B)load
- saveOrUpdate
- Merge
三、解答题(共4题,合计40分)
1、Struts2的工作原理是怎样的?(本题10分)
客户端发送请求--》请求经过一系列过滤器--》FilterDispatcher通过ActionMapper来决定这个Request需要调用哪个Action --》FilterDispatcher把请求的处理交给ActionProxy--》通过ConfigurationManager询问Struts配置文件(Struts.xml),找到需要调用的Action类--》ActionProxy创建一个ActionInvocation的实例 --》调用Action--》执行完毕,返回结果
2、Hibernate的缓存机制是怎样的?(本题10分)
一级缓存:
Hibenate中一级缓存,也叫做session的缓存,它可以在session范围内减少数据库的访问次数! 只在session范围有效! Session关闭,一级缓存失效!
只要是持久化对象状态的,都受Session管理,也就是说,都会在Session缓存中!
Session的缓存由hibernate维护,用户不能操作缓存内容; 如果想操作缓存内容,必须通过hibernate提供的evit/clear方法操作。
二级缓存:
二级缓存是基于应用程序的缓存,所有的Session都可以使用
Hibernate提供的二级缓存有默认的实现,且是一种可插配的缓存框架!如果用户想用二级缓存,只需要在hibernate.cfg.xml中配置即可; 不想用,直接移除,不影响代码。
如果用户觉得hibernate提供的框架框架不好用,自己可以换其他的缓存框架或自己实现缓存框架都可以。
Hibernate二级缓存:存储的是常用的类。
3、什么是IoC和DI?DI是如何实现的?(本题10分)
IoC叫控制反转,是Inversion of Control的缩写,DI(Dependency Injection)叫依赖注入,是对IoC更简单的诠释。控制反转是把传统上由程序代码直接操控的对象的调用权交给容器,通过容器来实现对象组件的装配和管理。所谓的”控制反转”就是对组件对象控制权的转移,从程序代码本身转移到了外部容器,由容器来创建对象并管理对象之间的依赖关系。依赖注入的基本原则是应用组件不应该负责查找资源或者其他依赖的协作对象。配置对象的工作应该由容器负责,查找资源的逻辑应该从应用组件的代码中抽取出来,交给容器来完成。DI是对IoC更准确的描述,即组件之间的依赖关系由容器在运行期决定,形象的来说,即由容器动态的将某种依赖关系注入到组件之中。
依赖注入可以通过setter方法注入(设值注入)、构造器注入和接口注入三种方式来实现,Spring支持setter注入和构造器注入,通常使用构造器注入来注入必须的依赖关系,对于可选的依赖关系,则setter注入是更好的选择,setter注入需要类提供无参构造器或者无参的静态工厂方法来创建对象。
4、Spring MVC的工作原理是怎样的?(本题10分)
客户端的所有请求都交给前端控制器DispatcherServlet来处理,它会负责调用系统的其他模块来真正处理用户的请求。
DispatcherServlet收到请求后,将根据请求的信息(包括URL、HTTP协议方法、请求头、请求参数、Cookie等)以及HandlerMapping的配置找到处理该请求的Handler(任何一个对象都可以作为请求的Handler)。
在这个地方Spring会通过HandlerAdapter对该处理器进行封装。
HandlerAdapter是一个适配器,它用统一的接口对各种Handler中的方法进行调用。
Handler完成对用户请求的处理后,会返回一个ModelAndView对象给DispatcherServlet,ModelAndView顾名思义,包含了数据模型以及相应的视图的信息。
ModelAndView的视图是逻辑视图,DispatcherServlet还要借助ViewResolver完成从逻辑视图到真实视图对象的解析工作。
当得到真正的视图对象后,DispatcherServlet会利用视图对象对模型数据进行渲染。
客户端得到响应,可能是一个普通的HTML页面,也可以是XML或JSON字符串,还可以是一张图片或者一个PDF文件。
转载:https://blog.csdn.net/daqiang012/article/details/101784812