SSH的一些面试题

来源:互联网 发布:java关键字 false 编辑:程序博客网 时间:2024/06/16 20:59

Struts2


1.struts2是什么?struts2工作原理?

http://yanguz123.iteye.com/blog/1697440

Struts2是一个web框架,框架本身大致可以分为3个部分:

核心控制器FilterDispatcher:核心控制器FilterDispatcher是Struts 2框架的基础,包含了框架内部的控制流程和处理机制。控制器作为一个Filter运行在Web应用中,它负责拦截所有的用户请求,当用户请求到达时,该Filter会过滤用户请求。如果用户请求以action结尾,该请求将被转入Struts 2框架处理.

业务控制器Action:业务控制器Action和业务逻辑组件是需要用户来自己实现的。

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


工作原理:

http://blog.sina.com.cn/s/blog_8f82e8280101fpbx.html

1、客户端初始化一个指向Servlet容器(例如Tomcat)的请求;

2、这个请求经过一系列的过滤器(Filter);

3、接着FilterDispatcher被调用,FilterDispatcher询问ActionMapper来决定这个请求是否需要调用某个Action;

4、如果ActionMapper决定需要调用某个Action,FilterDispatcher把请求的处理交给ActionProxy;

5、ActionProxy通过ConfigurationManager询问框架的配置文件,找到需要调用的Action类;

6、ActionProxy创建一个ActionInvocation的实例。

7、ActionInvocation实例使用命名模式来调用,在调用Action的过程前后,涉及到相关拦截器(Intercepter)的调用。

8、一旦Action执行完毕,ActionInvocation负责根据struts、xml中的配置找到对应的返回结果。返回结果通常是一个需要被表示的JSP或者FreeMarker的模版。


2.解释一下MVC?

(1) MVC(Model-View-Controller)是一种设计模式,它把应用程序分成三个核心模块:模型、视图、控制器,它们各自处理自己的任务。

(2) MVC处理过程

            (1) 首先控制器接收用户的请求,并决定应该调用哪个模型来进行处理。 

            (2) 然后模型根据用户请求进行相应的业务逻辑处理,并返回数据。

            (3) 最后控制器调用相应的视图格式化模型返回的数据,并通过视图呈现给用户。

(3) MVC优点

           (1)  首先,最重要的一点是多个视图能共享一个模型。同一个模型可以被不同的视图重用,大大提高了代码的可重用性。

           (2)  由于MVC的三个模块相互独立,改变其中一个不会影响其他两个,所以依据这种设计思想能构造良好的松耦合的构件.

此外,控制器提高了应用程序的灵活性和可配置性。控制器可以用来联接不同的模型和视图去完成用户的需求,这样控制器可以为构造应用程序提供强有力的手段。



Hibernate


1.hibernate是什么?

Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库。


2.为什么使用hibernate?

(1)、JDBC访问数据库的代码做了封装,大大简化了数据访问层繁琐的重复性代码

(2)、Hibernate是一个优秀的ORM实现。他很大程度的简化DAO层的编码工作,将软件开发人员从大量相同的数据持久层相关编程工作中解放出来,使开发更对象化了。

(3)、移植性好,支持各种数据库,如果换个数据库只要在配置文件中变换配置就可以了,不用改变hibernate代码。

(4)、支持透明持久化,因为hibernate操作的是纯粹的(pojo)java类,没有实现任何接口,没有侵入性。所以说它是一个轻量级框架


3.hibernate执行流程

(1)调用Configration类读取Hibernate的配置文件hibernate.cfg,xml

(2)在配置文件的mapping中读取映射文件中的信息

(3)用这些信息生成一个SessionFactory对象

(4)从SessionFactory对象生成一个Session对象,并用Session对象生成Transaction对象

(5)通过Session对象的get(),load(),save(),update(),delete()和saveOrUpdate()等方法对PO进行加载,保存,更新,删除等操作;在查询的情况下,可通过Session对象生成一个Query对象,然后利用Query对象执行查询操作;

(6)如果没有异常,Transaction对象将 提交这些操作结果到数据库中

(7)关闭Session

(8)关闭SessionFactory


http://www.importnew.com/14152.html



Spring

1.spring是什么?

Spring是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器框架。


2.解释AOP和IoC?

AOP,面向切面编程,就是把可重用的功能提取出来,然后将这些通用功能在合适的时候织入到应用程序中,比如事务管理、权限控制、日志记录、性能统计等,它跟正常的业务逻辑是正交的。比如业务1和业务2都需要一个共同的操作,与其往每个业务中都添加同样的代码,不如写一遍代码,让两个业务共同使用这段代码。

IoC叫控制反转,是Inversion ofControl的缩写,DI(Dependency Injection)叫依赖注入,是对IoC更简单的诠释。

控制反转是把传统上由程序代码直接操控的对象的调用权交给容器,通过容器来实现对象组件的装配和管理。所谓的"控制反转"就是对组件对象控制权的转移,从程序代码本身转移到了外部容器,由容器来创建对象并管理对象之间的依赖关系。IoC体现了好莱坞原则 - "Don’t call me, we will call you"。

依赖注入的基本原则是应用组件不应该负责查找资源或者其他依赖的协作对象。配置对象的工作应该由容器负责,查找资源的逻辑应该从应用组件的代码中抽取出来,交给容器来完成。DI是对IoC更准确的描述,即组件之间的依赖关系由容器在运行期决定,形象的来说,即由容器动态的将某种依赖关系注入到组件之中。

举个例子:一个类A需要用到接口B中的方法,那么就需要为类A和接口B建立关联或依赖关系,最原始的方法是在类A中创建一个接口B的实现类C的实例,但这种方法需要开发人员自行维护二者的依赖关系,也就是说当依赖关系发生变动的时候需要修改代码并重新构建整个系统。如果通过一个容器来管理这些对象以及对象的依赖关系,则只需要在类A中定义好用于关联接口B的方法(构造器或setter方法),将类A和接口B的实现类C放入容器中,通过对容器的配置来实现二者的关联。

推荐一篇关于AOP和IOC的文章:IOC和AOP的一些基本概念


3.struts2、hibernate、spring分别的作用?

(1)Struts是一个表示层框架,主要作用是界面展示,接收请求,分发请求。

(2)Hibernate是一个持久层框架,它只负责与关系数据库的操作。

(3)Spring是一个业务层框架,是一个整合的框架,能够很好地黏合表示层与持久层。

http://www.cnblogs.com/linjiqin/p/3573151.html


4.Spring支持的几种bean作用域?

(1)singleton:表示Bean以单例的方式存在,每次从容器调用bean,都返回同一个实例。

(2)prototype:原型,表示每次从容器中调用Bean时,都会返回一个新的实例。

(3)request:每次HTTP请求都会创建一个新的Bean

(4)session:同一个HttpSession共享同一个Bean,不同的HttpSession使用不同的Bean

(5)globalSession:同一个全局Session共享一个Bean

 

5.Spring容器配置bean的方式?

(1) 在XML文件中进行配置
(2) 使用注解进行配置

         @Controller通常用于控制器

         @Service通常用于业务逻辑类

         @Repository通常用于仓储类(例如我们的DAO实现类)

         @Component通常用于普通类

(3)基于Java程序进行配置(Spring 3+


6.自动装配bean的方式?

(1)no:不进行自动装配,手动设置Bean的依赖关系(通过ref属性)
(2)byName
:根据Bean的名字进行自动装配
(3)byType
:根据Bean的类型进行自动装配
(4)constructor
:类似于byType,不过是应用于构造器的参数,如果正好有一个Bean与构造器的参数类型相同则可以自动装配,否则会导致错误。 
(5)autodetect
:如果有默认的构造器,则通过constructor的方式进行自动装配,否则使用byType的方式进行自动装配。

0 0
原创粉丝点击