`

SSH 常见面试题02

 
阅读更多

 

1.struts
Action是不是线程安全的?如果不是,有什么方式可以保证Action的线程安全?如果是,说明原因

2.MVC,分析一下struts是如何实现MVC的

3.struts中的几个关键对象的作用(说说几个关键对象的作用)

4.spring
说说AOP和IOC的概念以及在spring中是如何应用的

5.Hibernate有哪几种查询数据的方式

6.load()和get()的区别

回答:
1.Struts1 Action是单例模式并且必须是线程安全的,因为仅有Action的一个实例来处理所有的请求。单例策略限制了Struts1 Action能作的事,并且要在开发时特别小心。Action资源必须是线程安全的或同步的。
Struts2 Action对象为每一个请求产生一个实例,因此没有线程安全问题。(实际上,servlet容器给每个请求产生许多可丢弃的对象,并且不会导致性能和垃圾回收问题)

2.struts是用一组类,servlet 和jsp规范实现mvc的

3.ActionFrom ActionServlet Action struts-config.xml

4.spring的核心就是IOC,通过指定对象的创建办法,描述对象与服务之间的关系,而不生成对象

5.3种,hql 条件查询() 原生sql

6.load()方法认为该数据一定存在,可以放心的使用代理来延时加载 ,如果使用过程中发现了问题,就抛出异常;
get()方法一定要获取到真实的数据,否则返回null

 

一些Spring和Hibernate的面试题(附答案)

HibernateJava/J2EESpring

 

1、 简述你对IoC(Inversion of Control)的理解,描述一下Spring中实现DI(Dependency Injection)的几种方式。

2、 Spring的Bean有多种作用域,包括:

singleton、prototype、request、session、global session、application、自定义

3、 简单描述Spring framework与Struts的不同之处,整合Spring与Struts有哪些方法,哪种最好,为什么?

4、 Hibernate中的update()和saveOrUpdate()的区别

5、 Spring对多种ORM框架提供了很好的支持,简单描述在Spring中使用Hibernate的方法,并结合事务管理。

答案:

1、好莱坞原则€€€€不要打电话找我,我会打给你的。IoC将创建的职责从应用程序代码搬到了框架中。Spring对Setter注入和构造方法注入提供支持。(详见http://martinfowler.com/articles/injection.html,以及http: //www.redsaga.com/spring_ref/2.0/html/beans.html#beans-factory- collaborators)

2、 除application(详见Spring framework 2.0 Reference的3.4节bean的作用域)

3、 Spring是完整的一站式框架,而Struts仅是MVC框架,且着重于MVC中的C。Spring有三种方式整合Struts:使用 Spring 的 ActionSupport 类整合 Struts;使用 Spring 的 DelegatingRequestProcessor 覆盖 Struts 的 RequestProcessor;将 Struts Action 管理委托给 Spring 框架,动作委托最好。(详见使用Spring 更好地处理Struts 动作)

Spring 2.0新增一种方式:AutowiringRequestProcessor。(详见http://www.iteye.com/topic/24239)

4、 saveOrUpdate()方法可以实现update()的功能,但会多些步骤,具体如下:

如果对象在该session中已经被持久化,不进行操作;

对象的标识符属性(identifier property)在数据库中不存在或者是个暂时的值,调用save()方法保存它;

如果session中的另一个对象有相同的标识符抛出一个异常;

以上皆不符合则调用update()更新之。

5、在context中定义DataSource,创建SessionFactoy,设置参数;DAO类继承HibernateDaoSupport,实现具体接口,从中获得HibernateTemplate进行具体操作。

在使用中如果遇到OpenSessionInView的问题,可以添加OpenSessionInViewFilter或OpenSessionInViewInterceptor。(详见Spring framework 2.0 Reference的12.2节Hibernate)

声明式事务需声明事务管理器,在context中设置指定属性,用确定和。

 

请你谈谈SSH整合

HibernateJava/J2EESpringStruts

 

SSH:
Struts(表示层)+Spring(业务层)+Hibernate(持久层)
Struts:
Struts是一个表示层框架,主要作用是界面展示,接收请求,分发请求。
在MVC框架中,Struts属于VC层次,负责界面表现,负责MVC关系的分发。(View:沿用JSP,HTTP,Form,Tag,Resourse ;Controller:ActionServlet,struts-config.xml,Action)
Hibernate:
Hibernate是一个持久层框架,它只负责与关系数据库的操作。
Spring:
Spring是一个业务层框架,是一个整合的框架,能够很好地黏合表示层与持久层。

 

Spring如何创建一个数据连接池

Java/J2EESpring

<bean id=”dataSource” class=”org.apache.commons.dbcp.BasicDataSource”>
<property name=”driver”>
<value>${db.driver}</value>
</property>
<property name=”url”>
<value>${db.url}</value>
</property>
<property name=”username”>
<value>${db.username}</value>
</property>
<property name=”password”>
<value>${db.password}</value>
</property>
</bean>

 

Spring如何获取Bean

Java/J2EESpring

通过xml配置文件

bean配置在xml里面,spring提供多种方式读取配置文件得到ApplicationContext.

第一种方式:FileSystemXmlApplicationContext

通过程序在初始化的时候,导入Bean配置文件,然后得到Bean实例:
ApplicationContext ac = new FileSystemXmlApplicationContext(”applicationContext.xml”)
ac.getBean(”beanName”);

第二种方式:WebApplicationContextUtil

在B/S系统中,通常在web.xml初始化bean的配置文件,然后由WebAppliCationContextUtil得到ApplicationContext.例如:
ApplicationContext ctx = WebApplicationContextUtils.getRequiredWebApplicationContext(ServletContext sc);
ApplicationContext ctx =   WebApplicationContextUtils.getWebApplicationContext(ServletContext sc);

其中 servletContext sc 可以具体 换成 servlet.getServletContext()或者 this.getServletContext() 或者 request.getSession().getServletContext();

另外,由于spring是注入的对象放在ServletContext中的,所以可以直接在ServletContext取出WebApplicationContext 对象:

WebApplicationContext webApplicationContext = (WebApplicationContext) servletContext.getAttribute(WebApplicationContext.ROOT_WEB_APPLICATION_CONTEXT_ATTRIBUTE);

 

Spring框架有哪几部分组成?

Java/J2EESpring

Spring框架有七个模块组成组成,这7个模块(或组件)均可以单独存在,也可以与其它一个或多个模块联合使用,主要功能表现如下:

 Spring 核心容器(Core):提供Spring框架的基本功能。核心容器的主要组件是BeanFactory,她是工厂模式的实现。BeanFactory使用控制反转(Ioc)模式将应用程序的配置和依赖性规范与实际的应用代码程序分开。

 Spring AOP通过配置管理特性,Spring AOP模块直接面向方面的编程功能集成到了Spring框架中,所以可以很容易的使Spring框架管理的任何对象支持 AOP。Spring AOP模块为基于Spring的应用程序中的对象提供了事务管理服务。通过使用Spring AOP,不用依赖于EJB组件,就可以将声明性事务管理集成到应用程序中。

 Spring ORMSpring框架集成了若干ORM框架,从而提供了ORM的对象关系工具,其中包括 JDO、Hibernate、iBatis和TopLink。所有这些都遵从Spring的通用事务和DAO异常层结构。

 Spring DAOJDBC DAO抽象层提供了有意义的异常层次的结构,可用该结构来管理异常处理和不同数据供应商抛出的异常错误信息。异常层次结构简化了错误处理,并且大大的降低了需要编写的异常代码数量(例如,打开和关系连接)。Spring DAO的面向JDBC的异常遵从通用的DAO异常层结构。

 Spring WEBWeb上下文模块建立在上下文模块(Context)的基础之上,为基于Web服务的应用程序提供了上下文的服务。所以Spring框架支持 Jakarta Struts的集成。Web模块还简化了处理多部分请求及将请求参数绑定到域对象的工作。

 Spring上下文(Context):Spring上下文是一个配置文件,向Spring框架提供上下文信息。Spring上下文包括企业服务,例如 JNDI、EJB、电子邮件、国际化校验和调度功能。

 Spring MVCSpring的MVC框架是一个全功能的构建Web应用程序的MVC实现。通过策略接口,MVC框架变成为高度可配置的,MVC容纳的大量视图技术,包括JSP、Velocity、Tiles、iText和Pol

 

用Spring有什么好处

Java/J2EESpring

◆Spring能有效地组织你的中间层对象,无论你是否选择使用了EJB。如果你仅仅使用了Struts或其他的包含了J2EE特有APIs的framework,你会发现Spring关注了遗留下的问题,。

◆Spring能消除在许多工程上对Singleton的过多使用。根据我的经验,这是一个主要的问题,它减少了系统的可测试性和面向对象特性。
◆Spring能消除使用各种各样格式的属性定制文件的需要,在整个应用和工程中,可通过一种一致的方法来进行配置。曾经感到迷惑,一个特定类要查找迷幻般的属性关键字或系统属性,为此不得不读Javadoc乃至源编码吗?有了Spring,你可很简单地看到类的JavaBean属性。倒置控制的使用(在下面讨论)帮助完成这种简化。
◆Spring能通过接口而不是类促进好的编程习惯,减少编程代价到几乎为零。
◆Spring被设计为让使用它创建的应用尽可能少的依赖于他的APIs。在Spring应用中的大多数业务对象没有依赖于Spring。
◆使用Spring构建的应用程序易于单元测试。
◆Spring能使EJB的使用成为一个实现选择,而不是应用架构的必然选择。你能选择用POJOs或local EJBs来实现业务接口,却不会影响调用代码。
◆Spring帮助你解决许多问题而无需使用EJB。Spring能提供一种EJB的替换物,它们适于许多web应用。例如,Spring能使用AOP提供声明性事务而不通过使用EJB容器,如果你仅仅需要与单个的数据库打交道,甚至不需要JTA实现。
■Spring为数据存取提供了一致的框架,不论是使用JDBC或O/R mapping产品(如Hibernate)。
Spring确实使你能通过最简单可行的解决办法解决你的问题。这些特性是有很大价值的。
总结起来,Spring有如下优点:
◆低侵入式设计,代码污染极低
◆ 独立于各种应用服务器,可以真正实现Write Once,Run Anywhere的承诺
◆Spring的DI机制降低了业务对象替换的复杂性
◆Spring并不完全依赖于Spring,开发者可自由选用Spring框架的部分或全部

 

Spring面试:什么是Spring, 它有什么特点

Java/J2EESpring

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

轻量——从大小与开销两方面而言Spring都是轻量的。完整的Spring框架可以在一个大小只有1MB多的JAR文件里发布。并且Spring所需的处理开销也是微不足道的。此外,Spring是非侵入式的:典型地,Spring应用中的对象不依赖于Spring的特定类。

控制反转——Spring通过一种称作控制反转(IoC)的技术促进了松耦合。当应用了IoC,一个对象依赖的其它对象会通过被动的方式传递进来,而不是这个对象自己创建或者查找依赖对象。你可以认为IoC与JNDI相反——不是对象从容器中查找依赖,而是容器在对象初始化时不等对象请求就主动将依赖传递给它。
面向切面——Spring提供了面向切面编程的丰富支持,允许通过分离应用的业务逻辑与系统级服务(例如审计(auditing)和事务()管理)进行内聚性的开发。应用对象只实现它们应该做的——完成业务逻辑——仅此而已。它们并不负责(甚至是意识)其它的系统级关注点,例如日志或事务支持。
容器——Spring包含并管理应用对象的配置和生命周期,在这个意义上它是一种容器,你可以配置你的每个bean如何被创建——基于一个可配置原型(prototype),你的bean可以创建一个单独的实例或者每次需要时都生成一个新的实例——以及它们是如何相互关联的。然而,Spring不应该被混同于传统的重量级的EJB容器,它们经常是庞大与笨重的,难以使用。
框架——Spring可以将简单的组件配置、组合成为复杂的应用。在Spring中,应用对象被声明式地组合,典型地是在一个XML文件里。Spring也提供了很多基础功能(事务管理、持久化框架集成等等),将应用逻辑的开发留给了你。

 

分享到:
评论

相关推荐

    java之SSH常见面试题

    【SSH常见面试题详解】 SSH 是 Java Web 开发中三个著名框架 Struts、Hibernate 和 Spring 的简称。这些框架分别负责模型-视图-控制器(MVC)架构的不同部分,为开发人员提供了一种高效且可扩展的方式来构建企业级...

    SSH2面试试题

    SSH2面试试题主要涵盖Struts 2、Hibernate和Spring这三个框架的相关知识,这些技术是Java企业级应用开发中常用的三大框架。以下是对这些面试题目的详细解析: 1. Struts 2框架来源于WebWork和XWork。WebWork是基于...

    SSH常见面试题文库.pdf

    本文档总结了 SSH(Spring、Struts、Hibernate)相关的面试题,涵盖了 MVC 模式、Struts、Hibernate、Spring 等方面的知识点。 1. MVC 模式 MVC 模式是软件架构的模式,用于分离应用程序的关注点。MVC 模式将应用...

    ssh100道面试题

    通过阅读和练习《三大框架SSH面试题.docx》中的题目,你可以更好地检验自己的知识水平,找出不足并加以补充,从而提高获得高薪工作的机会。在学习过程中,不断实践和反思,将理论知识转化为实际能力,才能在面试中...

    SSH经典面试题汇总

    根据给定文件的信息,我们可以总结出以下关于Struts、Hibernate、Spring的经典面试题知识点: ### 一、Java集合框架 Java集合框架主要包括`Collection`和`Map`两大类。 - **Collection**: 包括`List`和`Set`两种...

    JAVA-SSH面试题.doc

    Java-SSH面试题主要涉及到Java企业级开发中的三个重要框架:Struts、Hibernate和Spring,它们合称为SSH。这些框架的使用和集成是Java web开发中的常见知识点。 **MVC设计模式** MVC(Model-View-Controller)是一种...

    java程序员ssh面试常见题

    ### Java程序员SSH面试常见题详解 #### 1. Action是什么?如何证明Action是线程安全的? - **知识点概述**:在Struts框架中,Action是处理用户请求的核心组件之一,它负责执行业务逻辑并返回相应的结果。由于...

    JAVA_ssh面试题及答案

    【JAVA SSH面试题及答案】 SSH(Struts + Spring + Hibernate)是Java Web开发中常见的三大框架,它们各自承担着不同的职责,共同构建了一个高效、灵活的企业级应用程序架构。 **Hibernate工作原理及为什么使用** ...

    SSH面试题 java SSH面试题

    SSH面试题通常指的是Java开发中三个重要框架的面试问题,这三个框架是Struts、Spring和Hibernate。在这篇文章中,我们将详细探讨关于Hibernate的部分,因为它是SSH面试中的常见考点。 **Hibernate工作原理及为什么...

    java面试题,J2EE面试题 笔试题

    6、java常见面试题 7、java程序员面试宝典 8、java面试题及答案 9、java面试题编程篇 10、Oracle面试题 11、Oracle企业面试题集锦 12、Spring面试题 13、SSH面试题 14、Strut+Spring+Hibernate面试题 15、张孝祥整理...

    SSH框架部分常见面试题.pdf

    SSH框架部分常见面试题.pdf 本文将对 SSH 框架部分常见面试题进行详细的解释和分析,以帮助读者更好地理解 SSH 框架的各个方面。 MVC 框架 MVC 是一种设计模式,分为 Model、View、Controller 三个部分。Model ...

    SSH框架面试题目及答案

    SSH框架,全称为Struts+Spring+Hibernate,是Java Web开发中常见的三大开源框架的组合。这三大框架分别负责MVC模式中的Model、View和Controller部分。以下将详细阐述SSH框架的相关知识点: **一、Hibernate** ...

    ssh框架面试题

    SSH框架,全称为Struts+Spring+...以上内容详细介绍了SSH框架面试题中涉及的关键知识点,涵盖了Spring、Hibernate和Struts的相关概念和机制。这些知识点对于理解和掌握SSH框架,以及进行Java Web开发至关重要。

    ssh面试题文档

    主要是总结了一些常见面试题的总结,以及ssh 核心模块的配置,和主要流程的模块,希望对你有所帮助。

    java常见面试题.doc

    java常见面试题,里面内容涵盖了最近几年的面试题,很详细。

    SSH框架面试题.pdf

    ### SSH框架面试题详解 #### Struts框架 1. **解释Struts框架及其工作原理** Struts是一个基于MVC模式的开源Web框架,用于构建动态网页应用。它通过将模型(Model)、视图(View)和控制器(Controller)分离来...

    SSH笔试面试题, 面试官 最有可能问的哦!!!!

    SSH是三个流行开源框架的缩写,分别代表Spring、Hibernate和Struts,它们在Java Web开发中被广泛使用...同时,随着技术的发展,现代框架如Spring Boot和Spring MVC已经成为更常见的选择,了解其与SSH的异同也是必要的。

    2013ssh面试题

    【SSH面试题详解】 在Java Web开发领域,SSH(Struts、Spring、Hibernate)是一个常见的经典框架组合,常用于构建企业级应用。以下是对2013年SSH面试题的详细解析: 1. **Struts工作机制与优势** Struts是一个...

    JAVA-SSH相关面试题

    Java SSH(Spring、Struts和Hibernate)面试题涵盖了这些框架的核心概念、差异和在实际项目中的应用。让我们逐一深入探讨。 1. MVC设计模式: MVC全称为Model-View-Controller,是一种常见的软件设计模式,常用于...

    ssh框架面试题.doc

    SSH框架,全称为Struts、Hibernate、Spring,是Java Web开发中常见的三大开源框架的组合。这三者分别负责MVC(Model-View-Controller)架构中的不同层面:Struts处理控制逻辑,Hibernate负责持久化操作,Spring提供...

Global site tag (gtag.js) - Google Analytics