JAVA ------SSH 面试题

1. BeanFactory的作用是什么?   [中]  

BeanFactory是配置、创建、管理bean的容器,有时候也称为bean上下文。Bean与bean的依赖关系,也是由BeanFactory负责维护的。  

 

2. bean在spring的容器中两种基本行为是什么? [中]  

Singleton:单态  

Non-singleton或prototype:原型  

 

3. spring配置文件中的ref元素的作用是什么?它的两个基本属性是什么?  [中]  

用于指定属性值为spring容器中的其它bean.两个基本属性是bean和local  

 

10. Struts+Hibernate+Spring开发模式中Hibernate扮演的角色  [中]  

  答:Hibernate扮演的是数据持久层 它的作用是实现持久化对象和数据库表  

之间的映射,形成持久化对象和数据库表中数据的一个转换平台  

 

11. 什么是Hibernate 的抓取策略  [难]  

  抓取策略是指当应用程序需要利用关联关系进行对象获取的时候。 

 

12. 何为容器  [中]  

  容器就是符合某种规范的能够提供一系列服务的管理器。 

 

13. Spring实现了那几种模式  [中]  

答: 工厂模式和 单例模式  

 

14 :Hibernate实体对象生命周期的三种状态  [难]  

答 Transient(瞬态) ,persistent(持久态)和Detached(游历态)  

 

15: HQL查询参数的处理方法  [中]  

答:直接将参数拼写为HQL语句  

通过参数名称来标识参数  

 

16. Hibernate实体之间的关联关系的三种形式  [中]  

   答  一对一关联  一对多关联  多对多关联  

 

17. Hibernate具用的三种检索方式  [难]  

答:HQL检索方式, QBC检索方式,SQL检索方式

 

18. spring 中<Bean>的depends-on属性是什么  [中]  

Depends-on用于当前Bean初始化之前显示的强制一个或多个bean被初始化  

 

19. spring 中的BeanWrapper类是什么  [难]   (ˈræpɚ)

BeanWrapper类是一个对JavaBean进行各种操作的工具类  

BeanWrapper本身是一个接口BeanWrapperImpl实现了BeanWrapper  

 

20 . <set>元素有一个cascade属性,如果希望Hibernate级联保存集合中的对象,casecade属性应该取什么值?  [难]  

   答:save-update  

 

21. Hibernate中session什么时候是游离态  [中]  

答:session.close();方法后   

 

22. Hibernate中映射文件<hibernate-mapping>inverse属性和cascade属性的区别  [中]  

   答:inverse属性只存在于集合标记的元素中集合元素包括<set/>,<map/>,<list/>,<array/>,<bag/>  

 Inverse属性的作用是是否将对集合对象的修改反射到数据库中 inverse=”false”时修改反射到数据库中 inverse=”true”时修改不反射到数据库中  

 Cascade属性的作用是描述关联对象进行操作时的级联特性,因此只有涉及到关系的元素才有cascade属性  

 

23. : Hibernate中Session对象的load()方法和get()方法的区别(请列举出两点)[难]  

答:①记录不存在时 get()方法会返回空(null),而load()方法将会抛出一个HibernateException异常② load()方法查询数据时会先找Hibernate的内部缓存和二级缓  

存中的现有数据,get()方法在内部缓存中没有打到相对应的数据时装直接执行SQL语句  

进行查询  

 

24. : Hibernate中HQL属于什么语言  [易]  

  答:HQL是面向对象的查询语言,它可以查询以对象形式存在的数据。  

 

25. Hibernate简介以及主要功能  [中]  

  答:Hibernate是采用ORM模式实现数据持久层的一个优秀的JAVA组件,它提供了  

强大,高效的将JAVA对象进行持久化操作的服务  

 

26. 简述Hibernate的优点 [难]  

 答:开源和免费的License,我可以在需要的时候研究源代码,改写源代码,进行功能的定制。轻量级封装,避免引入过多复杂的问题,调试容易,也减轻程序员的负担。   

具有可扩展性,API开放,当本身功能不够用的时候,可以自己编码进行扩展。  

 

27. 怎样构建SessionFactory  [难]  

  答: Hibernate的SessionFactory接口提供Session类的实例,Session类用于完成对数据库的操作。  

由于SessionFactory实例是线程安全的(而Session实例不是线程安全的),所以每个操作都可以共用同一个SessionFactory来获取Session。Hibernate配置文件分为两种格式,一种是xml格式的配置文件,另一种是Java属性文件格式的配置文件  

 

28.你一般用spring做什么?
控制反转IOC  AOP

 

7. spring的事务如何配置
    1.配置sessionFactory,2.配置事务管理器,3. 配置事务特性,4. 配置哪些类的哪些方法配置事务

 

30. 什么是IOC?  [难]  

不创建对象,但是描述创建它们的方式。在代码中不直接与对象和服务连接,但在配置文件中描述哪一个组件需要哪一项服务。容器(在Spring 框架中是 IOC 容器)负责将这些联系在一起。   

就是由容器控制程序之间的关系,而非传统实现中,由程序代码直接操控,控制权由应用代码中转到了外部容器,控制权的转移,就是所谓的反转。  

 

32. J2EE是技术还是平台还是框架?  [中]  

   J2EE本身是一个标准,一个为企业分布式应用的开发提供的标准平台。  

   J2EE也是一个框架,包括JDBC、JNDI、RMI、JMS、EJB、JTA等技术。  

   

36. spring框架的7个模块是什么?   [ 难]  

答: (1) spring  AOP  --面象切面编程  

  (2)spring  DAO  --数据访问对象  

  (3)spring ORM   --对象关系影射  

(4)spring Contect  -- 上下文配置,向Spring框架提供上下文信息  

(5)spring WEB  - -WEB上下文模块  

(6)\spring WEB-MVC  --实现了MVC  

(7)spring CORE –核心容器提供Spring框架基本功能  

 

37. 什么是AOP 请祥述  [中]  

  答: 是面向切面编程   

    AOP 把软件系统分为两个部分:核心关注点和横切关注点。所谓的核心关注点,是业务处理的主要流程,也就是说这个解决方案要做的事。所谓横切关注点,是与核心业务无关的部分,它把常发生在核心关注点的多处,而各处基本相似,如日志,事务,权限等。  

 

38. Hinbernate和EJB的区别  [中]   

 答:Hibernate可以用在任何JDBC使用的场合,例如Java应用程序的数据库访问代码,DAO接口的实现类,甚至可以是BMP里面的访问数据库的代码。从这个意义上来说,Hibernate和EB不是一个范畴的东西,也不存在非此即彼的关系。  

 

39.  一般情况下,关系数据模型与对象模型之间有哪些匹配关系 [难]  

   答:表对应类  

记录对应表的对象  

表的字段对应类的属性     

 

42. 在Spring中给属性有几种赋值方式 请祥叙   [难]  

  答:(1)普通属性赋值    (2)集合属性赋值   (3)Properties赋值   (4)Map 属性赋值    

 

43.  在Spring说说Bean的alias元素和name属性有什么区别  [难]  

 答:<bean>元素name属性可以一次为<bean>定义多个别名  

      例:<bean id=”beanName” name=”alias_1,alias_2”/>  

      <alias>元素一次只能定义一个别名  

        例:<alias name=”beanName” alias=”toName”/>  

     注意: alias元素name属性是bean实例名  

44. Bean 的作用域用几种,请祥叙  [难]  

    答: 用5种   

分别是:   

1. singleton  IOC容器只会创建一个Bean的唯一的实例  

2. prototype  IOC容器在每次请求该Bean的时候都创建一个新的实例  

3. request 在一次Http请求中 IOC容器会返回该Bean的同一个实例,而对于不同的用户请求,则会返回不同的实例  

4. session 在一次Http请求Session 中 IOC容器会返回该Bean的同一个实例,而对于不同的用户Session,则会返回不同的实例  

5. global session在一个全局Http请求Session 中  

 

45. 简述什么是ORM   [中]  

答:ORM的全称是Object-Relational Mapping 翻译成中文就是“对象-关系映射”  

ORM组件的主要功能就是实现实体域对象的持久化并封装数据库访问的细节  

  ORM本身并不是一个组件,它是具用某种功能的组件的总称,也可以说是一种框  

架结构  

 

46.:struts中的几个关键对象的作用(说说几个关键对象的作用)  [中]  

 struts中的几个关键对象:ActionGlobal(设置语言靠它了) ModuleConfig(获取mapping),

  

47.Action的作用  [中]  

  Action的作用是接受用户的请求,通过调用业务方法实现业务处理的功能。  

 

48. 在通常情况下软件系统由表示层,业务层,持久层和数据库层组成,Struts属于哪一层? [难]  

  Struts属于表示层组件,它的作用主要体现在以下几个方面:  

1)    输出用户界面和接收用户的输入,实现与用户的交互。  

2) 调用业务方法,完成业务处理,还要包括处理后的显示工作。  

 

 

48:Struts标签库由哪些组件组成?  [难]  

标签库是组合在一起的一组JSP自定义标签。  

     标签库由以下组件组成:  

1) 标签处理程序  

2) 标签库描述符(TLD)文件  

3) 应用程序部署描述符(web.xml)文件  

4) JSP页面中标签库的声明  

 

 

50:怎样才能配置<html:button>的资源文件? [难]  

   在资源文件ApplicationResourses.properties 中加入  label.login=login     

  在jsp页面写:     

 <html:button  name="btn_login"><bean:message  key="label.login"/></html:button>     

  这样显示页面时,button上就会显示label.login的对应内容“login”  

   

51. 说说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组件生成动态网页,返回给客户。   

 

52: strust的Action是不是线程安全的? [难]  

答:线程安全就是你可以在多线程环境下使用它,而不需要你来对它进行特殊的处理。action都是继承至servlet的,由于servlet就是线程不安全的(指多个线程共享一个servlet对象,所以),所以不要再action中定义类变量和实例变量,否则其他线程改变了这些值,可本线程还在使用  

 

53 :MVC,分析一下struts是如何实现MVC的 [难]  

 1)模型(Model)在Struts的体系结构中,模型分为两个部分:系统的内部状态和可以改变状态的操作(事务逻辑)。内部状态通常由一组ActinForm Bean表示。根据设计或应用程序复杂度的不同,这些Bean可以是自包含的并具有持续的状态,或只在需要时才获得数据(从某个数据库)。大型应用程序通常在方法内部封装事务逻辑(操作),这些方法可以被拥有状态信息的bean调用。比如购物车bean,它拥有用户购买商品的信息,可能还有checkOut()方法用来检查用户的信用卡,并向仓库发定货信息。小型程序中,操作可能会被内嵌在Action类,它是struts框架中控制器角色的一部分。当逻辑简单时这个方法很适合。建议用户将事务逻辑(要做什么)与Action类所扮演的角色(决定做什么)分开。  

2)视图(View)视图主要由JSP建立,struts包含扩展自定义标签库(TagLib),可以简化创建完全国际化用户界面的过程。目前的标签库包括:Bean Tags、HTML tags、Logic Tags、Nested Tags 以及Template Tags等。  

 3)控制器(Controller)struts中,基本的控制器组件是ActionServlet类中的实例servelt,实际使用的servlet在配置文件中由一组映射(由ActionMapping类进行描述)进行定义。对于业务逻辑的操作则主要由Action、ActionMapping、ActionForward这几个组件协调完成的,其中Action扮演了真正的业务逻辑的实现者,ActionMapping与ActionForward则指定了不同业务逻辑或流程的运行方向。struts-config.xml 文件配置控制器。

 

56:Stuts框架中控制器组件的类主要有哪些?  [难]  

ActionServlet ,   RequestProcessor   , Action,    ActionMapping, ActionForward  

 

 

 

54  :简述什么是Struts  [中]  

 Struts只是一个MVC框架(Framework),用于快速开发JavaWeb应用。Struts实现的重点在C(Controller),包括ActionServlet/RequestProcessor和我们定制的Action,也为V(View)提供了一系列定制标签(CustomTag)。

但Struts几乎没有涉及M(Model),所以Struts可以采用JAVA实现的任何形式的商业逻辑。   

Spring是一个轻型容器(light-weightcontainer),其核心是Bean工厂(Bean Factory),用以构造我们所需要的M(Model)。在此基础之上,Spring提供了AOP(Aspect-Oriented Programming, 面向层面的编程)的实现,用它来提供非管理环境下申明方式的事务、安全等服务;对Bean工厂的扩展ApplicationContext更加方便我们实现J2EE的应用;DAO/ORM的实现方便我们进行数据库的开发;Web MVC和Spring Web提供了Java Web应用的框架或与其他流行的Web框架进行集成。   

就是说可将两者一起使用,达到将两者自身的特点进行互补。  

 

55   :Struts有哪些主要功能:[难]  

1.包含一个controller servlet,能将用户的请求发送到相应的Action对象。  

2. JSP自由tag库,并且在controller servlet中提供关联支持,帮助开发员创建交互式表单应用。  

3. 提供了一系列实用对象:XML处理、通过Java reflection APIs自动处理JavaBeans属性、国际化的提示和消息。  

Struts项目的目标是为创建Java web应用提供一个开放源代码的framework。Strutsframework的内核是基于例如Java Servlets, JavaBeans, ResourceBundles, 和 XML,以及各种 JakartaCommons包的标准技术的灵活的控制层。  

Struts提供了它自身的控制器组件,并整合了其他技术,以提供模型和视图。对于模型,同大多数的第三方软件包一样,如Hibernate, iBATIS, 或者 Object Relational Bridge,Struts能够和标准数据连接技术相结合,如JDBC和EJB。对于视图,Struts与JavaServer Pages协同工作,包含JSTL和JSF。  

 

41:Validator的组成与作用  [难]  

Validator框架主要包括以下几个部分:  

1) 实现各种验证规则的Java类  

2) 配置文件  

3) 资源文件  

4) JSP自定义标签  

Validator组件可以很好地解决用户输入数据的验证问题,但它并不是一个独立运行的组件,它可以被嵌入到目前大部分的Web应用开发框架中。Validator组件的验证方式有多种,既可以通过JavaScript脚本实现用户输入数据的页面验证,也可以实现在后台处理程序中的Java验证  

 

57. ActionForm的作用?[难]  

 ActionForm属于一种数据传输对象,联系了前台页面与后台的Action方法,实现了前台与后台之间的数据转换和传递。它的作用主要体现在以下几个方面:   

1) 在显示页面的时候用于完成页面中各种控件的初始化工作。  

2) 在用户提交请求的时候,ActionForm又代表了用户所提交的数据,供Action以及后续的业务处理方法使用  

ActionForm还有另外一个作用就是对用户提交数据的合法性进行验证   

 

 

 

1. 谈谈你mvc的理解
    MVC是Model—View—Controler的简称。即模型—视图—控制器。MVC是一种设计模式,它强制性的把应用程序的输入、处理和输出分开。
    MVC中的模型、视图、控制器它们分别担负着不同的任务。
    视图: 视图是用户看到并与之交互的界面。视图向用户显示相关的数据,并接受用户的输入。视图不进行任何业务逻辑处理。
    模型: 模型表示业务数据和业务处理。相当于JavaBean。一个模型能为多个视图提供数据。这提高了应用程序的重用性
    控制器: 当用户单击Web页面中的提交按钮时,控制器接受请求并调用相应的模型去处理请求。
            然后根据处理的结果调用相应的视图来显示处理的结果。
    MVC的处理过程:首先控制器接受用户的请求,调用相应的模型来进行业务处理,并返回数据给控制器。控制器调用相应的视图来显示处理的结果。并通过视图呈现给用户。

 

2. 项目中为什么使用SSH
    1. 使用Struts是因为struts是基于MVC模式的,很好的将应用程序进行了分层,使开发者更关注于业务逻辑的实现;第二,struts有着丰富的taglib,如能灵活运用,则能大大提高开发效率。
    2. 使用Hibernate:因为hibernate为Java应用提供了一个易用的、高效率的对象关系映射框架。hibernate是个轻量级的持久性框架,功能丰富。
    3. 使用Spring:因为spring基于IoC(Inversion of Control,反向控制)和AOP构架多层j2ee系统的框架,但它不强迫你必须在每一层中必须使用Spring,因为它模块化的很好,允许你根据自己的需要选择使用它的某一个模块;
       采用IoC使得可以很容易的实现bean的装配,提供了简洁的AOP并据此实现事务管理(Transcation Managment),等等 

 

11. STRUTS的配置文件是什么?
struts-config.xml

 

13. struts的处理流程。
一、ActionServlet的初始化
二、ActionServlet的process
三、RequestProcessor的process

 

 

 

 

 

 

 

 

 

 

 

 

 

1. 什么是Hibernate的并发机制?怎么去处理并发问题?
   Hibernate并发机制:
   a、Hibernate的Session对象是非线程安全的,对于单个请求,单个会话,单个的工作单元(即单个事务,单个线程),它通常只使用一次,然后就丢弃。
      如果一个Session 实例允许共享的话,那些支持并发运行的,例如Httprequest,session beans将会导致出现资源争用。
      如果在Http Session中有hibernate的Session的话,就可能会出现同步访问Http Session。只要用户足够快的点击浏览器的“刷新”, 就会导致两个并发运行的线程使用同一个Session。
   b、多个事务并发访问同一块资源,可能会引发第一类丢失更新,脏读,幻读,不可重复读,第二类丢失更新一系列的问题。
   解决方案:设置事务隔离级别。
         Serializable:串行化。隔离级别最高
            Repeatable Read:可重复读
             ReadCommitted:已提交数据读
             ReadUncommitted:未提交数据读。隔离级别最差
             设置锁:乐观锁和悲观锁。

乐观锁:使用版本号或时间戳来检测更新丢失,在<class>的映射中设置 optimistic-lock="all"可以在没有版本或者时间戳属性映射的情况下实现 版本检查,此时Hibernate将比较一行记录的每个字段的状态

行级悲观锁:Hibernate总是使用数据库的锁定机制,从不在内存中锁定对象!只要为JDBC连接指定一下隔 离级别,然后让数据库去搞定一切就够了。类LockMode 定义了Hibernate所需的不同的锁定级别:LockMode.UPGRADE,LockMode.UPGRADE_NOWAIT,LockMode.READ;

4. Hibernate与spring的联系
    hibernate中的一些对象可以给Spring来管理,让Spring容器来创建hibernate中一些对象实例化。例如:SessionFactory,HibernateTemplate等。
    Hibernate本来是对数据库的一些操作,放在DAO层,而Spring给业务层的方法定义了事务,业务层调用DAO层的方法,很好的将Hibernate的操作也加入到事务中来了。

 

5. Hibernate自带的分页机制是什么?如果不使用Hibernate自带的分页,则采用什么方式分页?
    1、hibernate自带的分页机制:获得Session对象后,从Session中获得Query对象。用Query.setFirstResult():设置要显示的第一行数据,
       Query.setMaxResults():设置要显示的最后一行数据。
    2、不使用hibernate自带的分页,可采用sql语句分页,
       如:5:为每页显示的记录,2为当前页: select * top 5from table where tabId not in (select tabId top (2-1)*5 from table);

8. update()和saveOrUpdate()的区别?
    update()和saveOrUpdate()是用来对跨Session的PO进行状态管理的。
    update()方法操作的对象必须是持久化了的对象。也就是说,如果此对象在数据库中不存在的话,就不能使用update()方法。
    saveOrUpdate()方法操作的对象既可以使持久化了的,也可以使没有持久化的对象。如果是持久化了的对象调用saveOrUpdate()则会更新数据库中的对象;如果是未持久化的对象使用此方法,则save到数据库中。
10. hibernate拒绝连接、服务器崩溃的原因?最少写5个
1. db没有打开  
2. 网络连接可能出了问题
3. 连接配置错了
4. 驱动的driver,url是否都写对了
5. LIB下加入相应驱动,数据连接代码是否有误
6. 数据库配置可能有问题
7. 当前联接太多了,服务器都有访问人数限制的
8. 服务器的相应端口没有开,即它不提供相应的服务

 

12. Hibernate主键介绍

Assigned方式由程序生成主键值。 

Hilo使用高低位算法生成主键,高低位算法使用一个高位值和一个低位值,然后把算法得到的两个值拼接起来作为数据库中的唯一主键.

Increment方式对主键值采取自动增长的方式生成新的主键值,但要求底层数据库的支持Sequence。
Identity当时根据底层数据库,来支持自动增长,不同的数据库用不同的主键增长方式。

Sequence需要底层数据库支持Sequence方式,例如Oracle数据库等

Native主键生成方式会根据不同的底层数据库自动选择Identity、Sequence、Hilo主键生成方式

UUID使用128位UUID算法生成主键,能够保证网络环境下的主键唯一性,也就能够保证在不同数据库及不同服务器下主键的唯一性。

Foreign GUID用于一对一关系中。GUID主键生成方式使用了一种特殊算法,保证生成主键的唯一性

询数据库表中重复的字段和多少个? Select age ,sum(1) from user group by age having sum(1)>1 jsp与servlet区别? 1.Jsp经编译后成为servlet,(jsp本质上就是servlet类,jvm只能识别java类,不能识别jsp的代码,web容器将jsp的代码编译成jvm能识别的java 类) 2.Jsp更擅长页面显示,servlet更擅长与逻辑控制。 3.Servlet中没有内置对象,jsp中的内置对象都是必须通过HttpServletRequest对象。HttpServletretSponse对象以及HttpServlet对象得到。 4.Jsp是servlet的一种简化,使用jsp只需要完成程序员需要输出到客户端的内容,jsp中的java脚本如何嵌套到一个类中,由jsp容器完成。而servlet则是个完整的java类,这个类的service方法用于生成对客户端的相应。 回答二: Jsp在本质上就是servlet,但是两者的创建方式不一样,servlet完全是java程序代码构成更擅长流程控制和事务处理。 Jsp有html和jsp标签构成,可以方便地编写动态网页,因此在实际的应用中采用servlet来控制业务流程,而采用jsp来生成动态页面,在struts框架中,jsp位于mvc的设计式的视图层, 答案三: Jsp是servlet技术的扩展,本质上就是servlet的建议方式。Jsp编译后是“类servlet”。Servlet和jsp最主要的不同点在于,servlet的用用逻辑是在java文件中,并且完全从表示层中的html里分离开来。而jsp的情况和html可以组合成一个扩展名为。Jsp文件。Jsp则重于试图,servlet主要用于控制逻辑。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值