关于SSH的面试题.docx
《关于SSH的面试题.docx》由会员分享,可在线阅读,更多相关《关于SSH的面试题.docx(14页珍藏版)》请在冰豆网上搜索。
关于SSH的面试题
SSH面试题
1.BeanFactory的作用是什么?
[中]
BeanFactory是配置、创建、管理bean的容器,有时候也称为bean上下文。
Bean与bean的依赖关系,也是由BeanFactory负责维护的。
2.bean在spring的容器中两种基本行为是什么?
[中]
Singleton:
单态、Non-singleton或prototype:
原型
3.spring配置文件中的ref元素的作用是什么?
它的两个基本属性是什么?
[中]
用于指定属性值为spring容器中的其它bean.两个基本属性是bean和local
4.什么是DWR?
它有哪些功能?
[中]
DWR(DirectWebRemoting)是一个WEB远程调用框架.可以在客户端利用JavaScript直接调用服务端的Java方法并返回值给JavaScript.DWR根据Java类来动态生成JavaScrip代码.支持DomTrees,支持Spring,支持commons-logging
5.Ajax的工作原理?
[难]
在会话的开始,浏览器加载Ajax引擎请求动作通过JavaScript调用Ajax引擎来代替.引擎负责绘制用户界面以及与服务器端通讯。
Ajax引擎采用异步交互过程--不用等待服务器的通讯。
6.XMLHttpRequest对象是什么,它有哪些常用方法?
[难]
一个JavaScript对象。
是Ajax的核心。
该对象的方法和属性:
open():
建立到服务器的新请求。
send():
向服务器发送请求。
abort():
退出当前请求。
readyState:
提供当前HTML的就绪状态。
responseText:
服务器返回的请求响应文本。
.
7.什么是Ajax?
[易]
AJAX(AsynchronousJavaScriptandXML),它不是一门新的语言或技术,而是多种技术的综合,包括:
JavascriptXHTMLCSSDOMXMLXSTLXMLHttpRequest
8.同步与异步的区别?
[难]
普通B/S模式(同步)AJAX技术(异步)
同步:
提交请求->等待服务器处理->处理完毕返回这个期间客户端浏览器不能干任何事,而异步则是请求通过事件触发->服务器处理->处理完毕
同步是阻塞模式,异步是非阻塞模式。
同步(发送方发出数据后,等接收方发回)异步(发送方发出数据后,不等接收方发回响应)
9.Struts+Hibernate+Spring开发模式中Hibernate扮演的角色[中]
答:
Hibernate扮演的是数据持久层它的作用是实现持久化对象和数据库表之间的映射,形成持久化对象和数据库表中数据的一个转换平台
10.什么是Hibernate的抓取策略[难]
抓取策略是指当应用程序需要利用关联关系进行对象获取的时候。
11.何为容器[中]
容器就是符合某种规范的能够提供一系列服务的管理器。
12.Spring实现了那几种模式[中]
答:
工厂模式和单例模式
13.HQL查询参数的处理方法[中]
答:
直接将参数拼写为HQL语句通过参数名称来标识参数
14.Hibernate具用的三种检索方式[难]
答:
HQL检索方式、QBC检索方式、SQL检索方式。
15.spring中的depends-on属性是什么[中]
Depends-on用于当前Bean初始化之前显示的强制一个或多个bean被初始化
16.spring中的BeanWrapper类是什么[难]
BeanWrapper类是一个对JavaBean进行各种操作的工具类
BeanWrapper本身是一个接口BeanWrapperImpl实现了BeanWrapper
17.元素有一个cascade属性,如果希望Hibernate级联保存集合中的对象,casecade属性应该取什么值?
[难]答:
save-update
18.Hibernate中session什么时候是游离态[中]
答:
session.close();方法后
19.Hibernate中映射文件inverse属性和cascade属性的区别[中]
答:
inverse属性只存在于集合标记的元素中集合元素包括,,
,,
Inverse属性的作用是是否将对集合对象的修改反射到数据库中inverse=”false”时修改反射到数据库中inverse=”true”时修改不反射到数据库中
Cascade属性的作用是描述关联对象进行操作时的级联特性,因此只有涉及到关系的元素才有cascade属性
20.Hibernate中HQL属于什么语言[易]
答:
HQL是面向对象的查询语言,它可以查询以对象形式存在的数据。
21.Hibernate简介以及主要功能[中]
答:
Hibernate是采用ORM模式实现数据持久层的一个优秀的JAVA组件,它提供了强大,高效的将JAVA对象进行持久化操作的服务
22.简述Hibernate的优点[难]
答:
开源和免费的License,可以在需要的时候研究源代码,改写源代码,进行功能的定制。
轻量级封装,避免引入过多复杂的问题,调试容易,也减轻程序员的负担。
具有可扩展性,API开放,当本身功能不够用的时候,可以自己编码进行扩展。
23.怎样构建SessionFactory[难]
答:
Hibernate的SessionFactory接口提供Session类的实例,Session类用于完成对数据库的操作。
由于SessionFactory实例是线程安全的(而Session实例不是线程安全的),所以每个操作都可以共用同一个SessionFactory来获取Session。
Hibernate配置文件分为两种格式:
一种是xml格式的配置文件,另一种是Java属性文件格式的配置文件
24.从XML文件读取配置信息构建SessionFactory的具体步骤如下。
[难]
(1)创建一个Configuration对象,并通过该对象的configura()方法加载Hibernate配置文件,代码如下。
Configurationconfig=newConfiguration().configure();
configura()方法:
用于告诉Hibernate加载hibernate.cfg.xml文件。
Configuration在实例化时默认加载classpath中的hibernate.cfg.xml,当然也可以加载名称不是hibernate.cfg.xml的配置文件,例如wghhibernate.cfg.xml,可以通过以下代码实现。
Configurationconfig=newConfiguration().configure("wghhibernate.cfg.xml");
(2)完成配置文件和映射文件的加载后,将得到一个包括所有Hibernate运行期参数的Configuration实例,通过Configuration实例的buildSessionFactory()方法可以构建一个惟一的SessionFactory,代码如下:
SessionFactorysessionFactory=config.buildSessionFactory();
构建SessionFactory要放在静态代码块中,因为它只在该类被加载时执行一次。
25.写出使用构造方法进行注入的关键代码[难]
26.什么是IOC?
[难]
不创建对象,但是描述创建它们的方式。
在代码中不直接与对象和服务连接,但在配置文件中描述哪一个组件需要哪一项服务。
容器(在Spring框架中是IOC容器)负责将这些联系在一起。
就是由容器控制程序之间的关系,而非传统实现中,由程序代码直接操控,控制权由应用代码中转到了外部容器,控制权的转移,就是所谓的反转。
27.J2EE是技术还是平台还是框架?
[中]
J2EE本身是一个标准,一个为企业分布式应用的开发提供的标准平台。
J2EE也是一个框架,包括JDBC、JNDI、RMI、JMS、EJB、JTA等技术。
28.我们在web应用开发过程中经常遇到输出某种编码的字符,如iso8859-1等,如何输出一个某种编码的字符串?
[难]
PublicStringtranslate(Stringstr){
StringtempStr="";
try{
tempStr=newString(str.getBytes("ISO-8859-1"),"GBK");
tempStr=tempStr.trim();
}
catch(Exceptione){
System.err.println(e.getMessage());
}
returntempStr;
}
29.如何使用静态工厂方法来创建Bean的实例[易]
factory-method=”静态方法名”/>
相当于:
StaticFactoryBeanstaticFactoryBean=StaticFactoryBean.静态方法名使用实例化的工厂方法来创建Bean的实例
—注意此时bean的class属性为空-->
Factory-method=”方法名”/>
相当于:
DynamicFactorydynamicFactory=newDynamicFactory();
DynamiceFactoryBeandynamiceFactoryBean=dynamicFactory.方法名
30.从Java属性文件读取配置信息构建SessionFactory的具体步骤如下:
[难]
(1)创建一个Configuration对象,此时Hibernate会默认加载classpath中的配置文件hibernate.properties,代码如下。
Configurationconfig=newConfiguration();
(2)由于在配置文件中缺少相应的配置映射文件的信息,所以此处需要通过编码方式加载,这可以通过Configuration对象的addClass()方法实现,具体代码如下。
config.addClass(BranchForm.class);
addClass()方法用于加载实体类。
(3)完成配置文件和映射文件的加载后,将得到一个包括所有Hibernate运行期参数的Configuration实例,通过Configuration实例的buildSessionFactory()方法可以构建一个惟一的SessionFactory,代码如下。
SessionFactorysessionFactory=config.buildSessionFactory();
31.spring框架的7个模块是什么?
[难]
答:
(1)springAOP--面象切面编程
(2)springDAO--数据访问对象
(3)springORM--对象关系影射
(4)springContect--上下文配置,向Spring框架提供上下文信息
(5)springWEB--WEB上下文模块
(6)springWEB-MVC--实现了MVC
(7)springCORE–核心容器提供Spring框架基本功能
32.什么是AOP请祥述[中]
AOP把软件系统分为两个部分:
核心关注点和横切关注点。
所谓的核心关注点,是业务处理的主要流程,也就是这个解决方案要做的事。
所谓横切关注点,是与核心业务无关的部分,它把常发生在核心关注点的多处,而各处基本相似,如日志,事务,权限等。
33.Hinbernate和EJB的区别[中]
答:
Hibernate可以用在任何JDBC使用的场合,例如Java应用程序的数据库访问代码,DAO接口的实现类,甚至可以是BMP里面的访问数据库的代码。
从这个意义上来说,Hibernate和EB不是一个范畴的东西,也不存在非此即彼的关系。
34.一般情况下,关系数据模型与对象模型之间有哪些匹配关系[难]
答:
表对应类记录对应表的对象表的字段对应类的属性
35.事务隔离级别是由谁实现的?
[难]答:
数据库系统
36.在Spring中给属性有几种赋值方式请祥叙[难]
答:
有四种分别是
(1)普通属性赋值
(2)集合属性赋值(3)Properties赋值(4)Map属性赋值
37.在Spring说说Bean的alias元素和name属性有什么区别[难]
答:
元素name属性可以一次为定义多个别名
例:
元素一次只能定义一个别名
例:
注意:
alias元素name属性是bean实例名
38.Bean的作用域有几种,请详叙[难]
答:
有5种,分别是:
1.singletonIOC容器只会创建一个Bean的唯一的实例
2.prototypeIOC容器在每次请求该Bean的时候都创建一个新的实例
3.request在一次Http请求中IOC容器会返回该Bean的同一个实例,而对于不同的用户请求,则会返回不同的实例
4.session在一次Http请求Session中IOC容器会返回该Bean的同一个实例,而对于不同的用户Session,则会返回不同的实例
5.globalsession在一个全局Http请求Session中
39.简述什么是ORM[中]
答:
ORM的全称是Object-RelationalMapping翻译成中文就是“对象-关系映射”
ORM组件的主要功能就是实现实体域对象的持久化并封装数据库访问的细节
ORM本身并不是一个组件,它是具用某种功能的组件的总称,也可以说是一种框
架结构
40.struts中的几个关键对象的作用(说说几个关键对象的作用)[中]
ActionGlobal(设置语言靠它了)ModuleConfig(获取mapping)。
41.Action的作用[中]
Action的作用是接受用户的请求,通过调用业务方法实现业务处理的功能。
42.通常情况下软件系统由表示层,业务层,持久层和数据库层组成,Struts属于哪一层?
Struts属于表示层组件,它的作用主要体现在以下几个方面:
1)输出用户界面和接收用户的输入,实现与用户的交互。
2)调用业务方法,完成业务处理,还要包括处理后的显示工作。
43.Struts标签库由哪些组件组成?
[难]
标签库是组合在一起的一组JSP自定义标签。
标签库由以下组件组成:
1)标签处理程序
2)标签库描述符(TLD)文件
3)应用程序部署描述符(web.xml)文件
4)JSP页面中标签库的声明
44.用write>读出一个URL和一个名称.用link>的话怎么组合起来。
即要达到这样的效果
writename="data"property="url">">
writename="data"property="tilte">
linkpage="writename="data"property="url">">
writename="data"property="title"/>
link>
会报出属性data无值的错误!
(page="writename="data"property="url">"中的data无值。
)
45.怎样才能配置<html:
button>的资源文件?
[难]
在资源文件ApplicationResourses.properties中加入label.login=login
在jsp页面写:
buttonname="btn_login">messagekey="label.login"/>
button>
这样显示页面时,button上就会显示label.login的对应内容“login”
46.说说struts框架的方法的工作原理或流程[易]
答:
对于采用Struts框架的web应用,在web应用启动时会加载并初始化ActionServlet,ActionServlet从struts-config.xml中读取配置信息,把它们存放到各种配置对象中,例如把Action的映射信息存放在ActionMapping对象中。
当ActionServlet接收到客户请求时,执行以下流程:
1.检索和用户请求匹配的ActionMapping实例,如果不存在,就返回用户请求路径无效信息;
2.如果ActionForm实例不存在,就创建一个ActionForm对象并在其中保存客户提交的表单内容;
3.根据配置信息决定是否调用ActionForm的validate()方法;
4.如果ActionForm的validate()方法返回null或返回一个不包含ActionMessage的ActionErrors对象,就表示表单验证成功;
5.ActionServlet根据ActionMapping实例包含的映射信息将请求转发给Action(如果Action实例不存在,就先创建Action实例),然后调用Action的excute()方法;
6.Action的excute()方法返回一个ActionForward对象,ActionServlet再把客户请求转发给ActionForward对象指向的JSP组件;
7.ActionForward对象指向的JSP组件生成动态网页,返回给客户。
47.strust的Action是不是线程安全的?
[难]
答:
线程安全就是可以在多线程环境下使用它,而不需要你来对它进行特殊的处理。
action都是继承至servlet的,由于servlet就是线程不安全的(指多个线程共享一个servlet对象),所以不要再action中定义类变量和实例变量,否则其他线程改变了这些值,可本线程还在使用
48.MVC,分析一下struts是如何实现MVC的[难]
从MVC角度来看看struts的体系结构(Model2)与工作原理:
1)模型(Model)
在Struts的体系结构中,模型分为两个部分:
系统的内部状态和可以改变状态的操作(事务逻辑)。
内部状态通常由一组ActinFormBean表示。
根据设计或应用程序复杂度的不同,这些Bean可以是自包含的并具有持续的状态,或只在需要时才获得数据(从某个数据库)。
大型应用程序通常在方法内部封装事务逻辑(操作),这些方法可以被拥有状态信息的bean调用。
比如购物车bean,它拥有用户购买商品的信息,可能还有checkOut()方法用来检查用户的信用卡,并向仓库发定货信息。
小型程序中,操作可能会被内嵌在Action类,它是struts框架中控制器角色的一部分。
当逻辑简单时这个方法很适合。
建议用户将事务逻辑(要做什么)与Action类所扮演的角色(决定做什么)分开。
2)视图(View)
视图主要由JSP建立,struts包含扩展自定义标签库(TagLib),可以简化创建完全国际化用户界面的过程。
目前的标签库包括:
BeanTags、HTMLtags、LogicTags、NestedTags以及TemplateTags等。
3)控制器(Controller)
在struts中,基本的控制器组件是ActionServlet类中的实例servelt,实际使用的servlet在配置文件中由一组映射(由ActionMapping类进行描述)进行定义。
对于业务逻辑的操作则主要由Action、ActionMapping、ActionForward这几个组件协调完成的,其中Action扮演了真正的业务逻辑的实现者,ActionMapping与ActionForward则指定了不同业务逻辑或流程的运行方向。
struts-config.xml文件配置控制器。
49.简述什么是Struts[中]
Struts只是一个MVC框架(Framework),用于快速开发JavaWeb应用。
Struts实现的重点在C(Controller),包括ActionServlet/RequestProcessor和我们定制的Action,也为V(View)提供了一系列定制标签(CustomTag)。
但Struts几乎没有涉及M(Model),所以Struts可以采用JAVA实现的任何形式的商业逻辑。
Spring是一个轻型容器(light-weightcontainer),其核心是Bean工厂(BeanFactory),用以构造我们所需要的M(Model)。
在此基础之上,Spring提供了AOP(Aspect-OrientedProgramming,面向层面的编程)的实现,用它来提供非管理环境下申明方式的事务、安全等服务;对Bean工厂的扩展ApplicationContext更加方便我们实现J2EE的应用;DAO/ORM的实现方便我们进行数据库的开发;WebMVC和SpringWeb提供了JavaWeb应用的框架或与其他流行的Web框架进行集成。
就是说可将两者一