SSH总结面试题

时间:2019-05-12 22:19:01下载本文作者:会员上传
简介:写写帮文库小编为你整理了多篇相关的《SSH总结面试题》,但愿对你工作学习有帮助,当然你在写写帮文库还可以找到更多《SSH总结面试题》。

第一篇:SSH总结面试题

张国良编辑

SSH面试题

版本1.0

1.struts1与struts2的区别 :

1、两者之间目前只有名字是一样的。

2、struts1是通过继承来实现相关机制的。而struts2是通过接口方式来实现的。

3、在struts2中没有了ActionForm使用Action来代替原来struts1中的ActionForm和Action两者的功能。

4、Struts2比Struts1更加容易进行单元测试

5、线程安全

2.hibernate与iBATIS的区别

hibernate和ibatis都是持久层的ORM框架,hibernate是全自动化的,而ibatis是半自动化的。

为什么这样说呢?因为hibernate把我们要用到的增、删、改的SQL语句都封装了,我们不需要再自己手动写,直接调用即可,所以称它全自动。而对于ibatis,所有的SQL语句都要我们自己来手写,所以称它为半自动化的框架,就等于是一个O/R Mapping 解决方案.有了这框架,只要配置下映射文件,就不需要手写sql语句了.Hibernate是全自动化的,可以说O/R做的相当全面了.iBateis和Hibernate相比,iBatis最大的特点就是小巧,上手很快。如果你不需要太多复杂的功能,iBatis是能满足你的要求又足 够灵活的最简单的解决方案

3、hibernate的优化(项目)

1.使用双向一对多关联,不使用单向一对多

2.灵活使用单向一对多关联

3.不用一对一,用多对一取代

4.配置对象缓存,不使用集合缓存

5.一对多集合使用Bag,多对多集合使用Set

6.继承类使用显式多态

7.表字段要少,表关联不要怕多,有二级缓存撑腰

4、hibernate中session与sessionfactory的联系,分别什么时候用

sessionFactory、session都是由hibernate框架生成的,其中sessionFactory包括了数据库配置和映射关系等资源,一个项目中只能生成一个sessionFactory实例。因此sessionFactory被设计成线程安全的。session是对对象进行操作并映射至对应的数据库表中的,它由sessionFactory生成,不支持多线程并发,因此它是非线程安全的。

5、hibernate中get和load的区别

1、它们都用来根据主键,查找相应的记录

2、load和get方法对缓存的应用不同,其中load和get都可以使用session层的缓存,但是对于load可以应用二级缓存,而get无法使用

抛异常Null

张国良编辑

注意:criteria也是绑定session的,即随着session的产生而产生,随着session的消亡而消亡。如果想重用criteria对象,必须使用DetechedCriteria对象,实现criteria和session进行分离。

7、在项目中用hibernateORM框架与传统jdbc比较有什么优点

延迟加载:

延迟加载机制是为了避免一些无谓的性能开销而提出来的,所谓延迟加载就是当在真正需要数据的时候,才真正执行数据加载操作。在Hibernate中提供了对实体对象的延迟加载以及对集合的延迟加载,另外在Hibernate3中还提供了对属性的延迟加载。

hibernate中lazy的使用

hibernate中lazy的使用(2008-09-12 13:57:47)

标签:杂谈分类:hibernate

hibernate中lazy的使用

lazy,延迟加载

Lazy的有效期:只有在session打开的时候才有效;session关闭后lazy就没效了。

lazy策略可以用在:

* 标签上:可以取值true/false

*

标签上,可以取值true/false,这个特性需要类增强

* /等集合上,可以取值为true/false/extra

* /等标签上,可以取值false/proxy/no-proxy

一、概念:即两者之间存在关联关系,那么在加载主对象的时候,对副对象的加载处理,是延迟或立即,比如说公司(主)-》部门(副).二、分析

1.立即检索

实现方法:将属性的lazy设为false,即不延迟加载.注解是@fetch = FetchType.EAGER.检索方式:加载主对象的同时加载副对象信息,反之亦然.优点:即使当前session关闭,处于游离状态,也能获取到关联对象.缺点:执行的SQL太多,增加数据库压力,还可能加载一些不需要的对象,即浪费时间,又浪费缓存控件.优先使用场合:

a.在业务或程序中,需要立即访问关联对象时可以使用.b.使用二级缓存.2.延迟检索

实现方法:将属性的lazy设为true,即延迟加载.注解是@fetch = FetchType.LAZY.检索方式:不立即检索与之关联的对象,但是会为关联对象创建一个代理对象,这个代理对象只初始化一个OID,只有这个代理对象的属性被访问时,才初始化该代理对象.优点,缺点:与立即检索相反.优先使用场合:

a.一对多或多对多的关联使用.b.在程序中不需要立即访问或者该关联的对象不需要访问的时候.什么时候用延迟加载

例如:银行开户,一个人可以开多个帐户,一个帐户只能属于一个人,所以在用户类里包含一个帐户的集合,帐户类里包含一个用户类型,他们之间是一对多的关系.如过你在查询的时候,通过用户查询是,如果只想查到用户就用(hibernate)默认的延迟加载,这样效率也高,如果你想把该用户的的所有帐户都一同查出来,那就需要立即加载了,这样一来如果一个用户对应的帐户比较多的话,他的效率是很低的.设置加载方式一般有两种,一种是通过映射文件(lazy=false),另一种是通过程序的方式来实现的也很简单.Struts2工作流程:

Struts2:

(1)客户端提交一个HttpServletRequest请求(.action或JSP页面)。

(2)请求被提交到一系列Filter过滤器,如ActionCleanUp和FilterDispatcher等。

(3)FilterDispatcher是Struts2控制器的核心,它通常是过滤器链中的最后一个过滤器。

(4)请求发到FilterDispatcher后,FilterDispatcher询问ActionMapper是否需要调用某个Action来处理这个Request(一般根据URL后缀是否为.action来判断)。

(5)如果ActionMapper决定需要调用某个Action,FilterDispatcher则把请求交到ActioProxy,由其进行处理。

(6)ActionProxy通过Configuration Manager(它会访问struts.xml)询问框架的配置文件,找到需要调用的Action类。

(7)ActionProxy创建一个ActionInvocation实例,而ActionInvocation通过代理模式调用Action,(在调用之前会根据配置文

第二篇:ssh架构个人总结

(转载)看过了两三个SSH搭建的视频(浪曦风中叶老师、尚学堂李勇老师的两个视频),也跟着视频把这个框架搭了两遍,有点迷迷糊糊的,为了加深印象,我决定不依靠视频再来搭一遍,经过一天的调试与处理,终于能够独立自主地把SSH框架给搭建起来了,不容易啊。

其中出现的错误以及各种各样的BUG不计其数,通过查阅文档以及Google得到了解决。这里,我就来做一个总结:

SSH框架的基本配置:

1.相关jar包的引入,这里我采用的是spring2 + struts2 + hibernate3的组合,搭完了之后才发现Spring已经到3了,不知道在Spring3上面的配置是否相同,有待尝试。

Code:

1.2.3.4.5.6.7.8.9.10.11.12.13.14.15.16.17.18.-----核心jar包-----# spring.jar# struts2-core.jar# xwork-core.jar# mysql-connector-java.jar# hibernate3.jar# struts2-spring-plugin.jar-----在默认配置下核心jar所依赖的jar包---# commons-collections.jar---|# commons-fileupload.jar-----|------------这三个jar包是在jakarta-commons项目中一些# commons-logging.jar--------|基于JDK上扩展的工具包。# freemarker.jar# log4j.jar# ognl.jar# dom4j.jar# jta.jar# cglib-nodep.jar# antlr.jar------------这个jar包是spring AOP 采用 动态代理 时需要的jar包。

2.相关的配置

i)/WEB-INF/web.xml

a.需要配置一个Struts2的Filter:

Code:

1.2.3.struts2org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter

4.5.6.struts2

8.

b.由于从struts2.1.3之后的版本不再建议采用

org.apache.struts2.dispatcher.FilterDispatcher,所以,我们最好

配置成StrutsPrepareAndExecuteFilter或者StrutsExecuteFilter以及StrutsPrepareFilter,需要注意的是:如果配置

成StrutsExecuteFilter需要将StrutsPrepareFilter也配置上,否则将会报错。所以建议就只直接采用StrutsPrepareAndExecuteFilter。c.此外还需要配置一个ContextListener:

Code:

1.2.3.4.5.org.springframework.web.context.ContextLoaderListener

如果你的applicationContext.xml没有配置在/WEB-INF/目录或者采用的不是默认的文件名,则还需要配置context-param,让Spring找到对应的配置文件,如下(注意:param-name的内容一定是

contextConfigLocation,Spring将根据该名称注入到相应的对象中):

Code:

1.2.3.4.

contextConfigLocation

classpath*:application-Context.xml

ii)applicationContext.xml,这个文件是比较核心的文件:

a)配置sessionFactory,有两种配置方式:

(1)采用传统的Hibernate配置文件,将其映射到sessionFactory中:

Code:

1.

”>

2.3.4.5.

classpath:hibernate.cfg.xml

采用这种方式时,需要在hibernate.cfg.xml文件中配置数据连接相关信息,这里与一般的hibernate配置文件一样:

Code:

1.

3.4.5.

com.mysql.jdbc.Driver

jdbc:mysql://localhost:3306/ssh_test

6.7.8.9.10.11.12.13.14.15.

root

orange

org.hibernate.dialect.MySQLDialect

true(2)采用sessionFactory属性的方式配置数据源相关信息,如下:

Code:

1.2.

”>

3.4.5.6.7.8.9.10.11.12.13.14.

”>

15.16.17.18.19.20.21.22.23.24.25.

org.hibernate.dialect.MySQLDialect

true

com/test/bean/User.hbm.xml

27.

b)配置完sessionFactory后,还可以根据需要配置以下三方面的内容,也可以不配置选择采用默认的方式:

Code:

1.2.

nManager”>

3.4.5.6.7.8.9.10.11.12.13.14.15.16.17.18.19.20.21.22.

这样就基本完成了我们的ssh的相关配置。

3.SSH的基本使用:

具体分工:

# 在applicationContext.xml中配置相关的bean信息

Code:

1.2.3.4.5.6.

7.

这里的property属性中name值对应的是相应处理类生成时需要IoC容器注入的属性,比如说id为loginAction的处

理类为com.ssh.action.LoginAction(它其中应当设置一个

setService(UserService service)方法),这样在需要使

用该bean时,IoC容器会调用这个setService方法来将生成的userService对象传入。

需要注意的是,如果想让IoC容器注入相应属性,则必须要实现相应属性的set方法。

# 在struts.xml中配置action的相关信息

相关注意事项:

由于所有的bean都由Spring来管理,那么在struts.xml中一个action的class属性就不能写成具体的类,而是要使用该类在applicationContext.xml文件中配置的Bean的id,如:

Code:

1.2.3.4./result.jsp/index.jsp

这个loginAction对应的就是上面的id为loginAction的bean,而这个bean的class属性中设置的才是真正的对应的Action的处理类。

# 对于每个模型,都要有一*.hbm.xml

3.其它一些注意点:

Spring中一些的概念很重要:AOP,IOC。

第三篇:java的SSH框架总结(范文)

对于java中SSH框架的理解

SSH 是指 Struts+ spring+ hibernate 的一个集成框架,这是一种比较流行的java web应用程序开源框架。

Struts

Struts是一个基于Sun J2EE平台的MVC框架,主要采用Servlet和JSP技术来实现的。由于Struts能充分满足引用开发的需求,简单易用,敏捷迅速,所以很受关注。Struts 吧Servlet、JSP、自定义标签和信息资源(message resource)整合到一个统一的框架中,开发人员利用其进行开发室不用再自己编写实现全套的MVC模式,极大的节省了时间。

Spring Spring是一个解决了许多在J2EE开发中常见的问题的强大框架。Spring提供了管理业务对象的一致方法并且鼓励了注入对接口编程而不是对类编程的良好习惯。

Spring的架构基础是基于JavaBean属性的Inversion of Control 容器。然而,这仅仅是完整图景中的一部分:在Spring使用IOC容器作为构建完关注所有架构层的完整解决方案是独一无二的。Spring提供了唯一的数据访问抽象,包括简单和有效率的JDBC框架,极大的改进了效率并且减少了可能的错误。Spring的数据访问架构还集成了Hibernate 和其他O/R mapping 解决方案。Spring还提供了唯一的事物管理抽象。它能够在各种底层事务管理技术,例如JTA 或者JDBC事务提供一个一致的编程模型。Spring提供了一个标准Java语言编写的AOP框架,他给POJOs提供了声明式的事务管理和其他企业事务——如果有必要还可以实现自己的aspects。这个框架提供了可以和IOC容器集成的强大而灵活的MVC web框架。

Hibernate Hibernate 是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,是的java程序员可以随心所欲的适用对象编程思维来操控数据库。Hibernate 可以应用在任何使用JDBC的场合,既可以在java客户端程序中使用,也可以在Servlet/jsp的web应用中使用,其最具革命性意义的是:Hibernate可以在应用EJB的J2EE架构中取代CMP,完成数据持久化的重任。

在SSH的组合框架模式中,三者各自的作用 Struts 是一个很好的MVC框架,主要技术是Servlet和JSP。Struts的MVC设计模式可以让我们的逻辑思维变得很清晰,让我们写程序层次分明。

Spring提供了管理业务对象的一致方法,并鼓励注入对接口编程而不是对类编程的良好习惯,使我们的产品在最大程度上解耦。

Hibernate 是用来持久化数据的,提供了完全面向对象的数据库操作。Hibernate对JDBC进行了非常轻量级的封装,使得他与关系型数据库打交道变得非常轻松。

负责Web层:

ActionFormBean接收网页中表单提交的数据,然后通过Action进行处理,再Forward到对应的网页,在Struts-config.xml中定义了,ActionServlet会加载进来。

Spring负责业务层管理,即Service:

Service为Action提供统一的调用接口,封装持久层的DAO,并集成Hibernate,Spring可对JavaBean和事物进行统一管理。

Hibernate负责持久层,完成数据库的CRUD操作:

Hibernate有一组hbm.xml文件和PO,是与数据库中的表相对应的,然后定义DAO,这些是与数据库打交道的类。

在Struts+Spring+Hibernate系统中,对象之间的调用流程如下:

Struts——>Spring——>Hibernate

JSP——>Action——>Service——>DAO——>Hibernate

第四篇:SSH技术方案

基于Struts2+Spring+Hibernate实现轻量级企业式开发技术方案

一. 技术平台

J2EE是Java2平台企业版(Java 2 Platform Enterprise Edition)

J2EE核心是一组技术规范与指南,其中所包含的各类组件、服务架构及技术层次,均有共同的标准及规格,让各种依循J2EE架构的不同平台之间,存在良好的兼容性,解决过去企业后端使用的信息产品彼此之间无法兼容,企业内部或外部难以互通的窘境。

J2EE是一种利用Java 2平台来简化企业解决方案的开发、部署和管理相关的复杂问题的体系结构。J2EE技术的基础就是核心Java平台或Java 2平台的标准版,J2EE不仅巩固了标准版中的许多优点,例如“编写一次、随处运行”的特性、方便存取数据库的JDBC API、CORBA技术以及能够在Internet应用中保护数据的安全模式等等,同时还提供了对 EJB(Enterprise JavaBeans)、Java Servlets API、JSP(Java Server Pages)以及XML技术的全面支持。其最终目的就是成为一个能够使企业开发者大幅缩短投放市场时间的体系结构。

J2EE体系结构提供中间层集成框架用来满足无需太多费用而又需要高可用性、高可靠性以及可扩展性的应用的需求。通过提供统一的开发平台,J2EE降低了开发多层应用的费用和复杂性,同时提供对现有应用程序集成强有力支持,完全支持Enterprise JavaBeans,有良好的向导支持打包和部署应用,添加目录支持,增强了安全机制,提高了性能。[1]

二. 轻量级J2EE架构

目前 J2EE 应用中,由于应用需求不同,架构设计上分成两种设计方式,即重量级J2EE架构和轻量级J2EE架构。银行,电信,大型企业的业务系统逻辑复杂,结点分布广泛,且普遍使用了物理上多层架构,事务要求性极高,对系统的稳定性要求也是极高的,因此大多数使用重量级的EJB开发架构。

一般的中小型应用系统,所关注的是访问速度与快速响应市场需求变化,强大的系统缓存功能,传统的大型分布式J2EE架构就显得不太合适。本系统的开发基于 J2EE 的轻量级多层架构,即业界比较成熟的 Struts2 + Spring + Hibernate 框架: Struts2实现 MVC 最为成熟的框架之一,在 J2EE 项目中应用广泛; Spring 可以实现对 Hibernate 的无缝链接,适用于业务处理层;在数据持久层中,采用Hibernate 这一功能强大的 ORM 映射工具。

J2EE的三层结构在业界是指表示层(Presentation),业务逻辑层(Business logic)以及基础架构层(Infrastructure)。一个最常用的扩展就是将三层体系扩展为五层体系,即表示层(Presentation)、控制/中介层(Controller/Mediator)、领域层(Domain)、数据持久层(Data Persistence)和数据源层(Data Source)。它其实是在三层架构中增加了两个中间层。控制/中介层位于表示层和领域层之间,数据持久层位于领域层和基础架构层之间。而轻量级架构Struts2 + Spring + Hibernate可以实现J2EE多层结构,Struts2用于表示层、控制层,Spring 用于业务处理层,而Hibernate用于数据持久层。[2] 三. 应用部署架构

1.Web服务器架构

Tomcat 服务器是一个免费的开放源代码的Web 应用服务器。Tomcat是Apache 软件基金会(Apache Software Foundation)的Jakarta 项目中的一个核心项目,由Apache、Sun 和其他一些公司及个人共同开发而成。由于有了Sun 的参与和支持,最新的Servlet 和JSP规范总是能在Tomcat 中得到体现。因为Tomcat 技术先进、性能稳定,而且免费,因而深受Java 爱好者的喜爱并得到了部分软件开发商的认可,成为目前比较流行的Web 应用服务器。

Tomcat 是一个轻量级应用服务器,它运行时占用的系统资源小,扩展性好,支持负载平衡与邮件服务等开发应用系统常用的功能,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP 程序的首选。对于一个初学者来说,可以这样认为,当在一台机器上配置好Apache 服务器,可利用它响应对HTML 页面的访问请求。实际上Tomcat 部分是Apache 服务器的扩展,但它是独立运行的,所以当你运行Tomcat 时,它实际上作为一个与Apache 独立的进程单独运行的。2.系统数据库 MySQL是一种关联数据库管理系统,关联数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。MySQL的SQL语言是用于访问数据库的最常用标准化语言。由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,一般中小型网站的开发都选择MySQL作为网站数据库。

四. 主要技术方案

1.表示层、控制层

表示层是整个架构中最活跃的分层,由WEB服务器及其组件构成,主要用于处理客户端的请求、响应业务层组件的请求。表示层引入了基于组件开发的Struts开源框架,采用Servlet与XML等技术实现,具有良好的可伸缩性和稳定性,降低了系统开发的复杂度、提高了开发效率。

Struts:可用于快速开发JAVA WEB应用。Struts实现的重点在C(Controller),包括ActionServlet/RequestProcessor和开发人员定制的Action,也为V(View)提供了一系列定制标签(Custom Tag)。Struts没有涉及M(Model),所以Struts可以调用JAVA实现的任何形式的业务逻辑组件。2.业务层

在的项目开发中,每个领域都会有自己独特的业务逻辑,由此使项目中代码高度耦合,原本有可能被重用的代码或功能,因为与具体的业务逻辑绑定在一块而导致很难被重用。因此我们将实现这些具体逻辑的代码抽取出来分为单独的一层,其目的是希望通过层,来降低它与系统其他部分的耦合度。现实中世界是变化的,既然该层实现的是现实中具体的业务逻辑,那该层的实现代码不可避免的会发生变更。怎样让该层适应最大的变化,做到最小的改动?通常我们在编码的时候会尽量考虑到同一业务多种实现的兼容和可扩展的能力。因此我们在该层借助了Spring,通过依赖注入、AOP应用、面向接口编程,来降低业务组件之间的耦合度,增强系统扩展性。

IOC(Inversion of Control),译作反转控制,其功能是将类之间的依赖转移到外部的配置文件中,避免在调用类中硬编码实现类,因此也被称作依赖注入(Dependency Injection)。在以往的开发中,通常利用工厂模式(Factory)来解决此类问题,其实不管是工厂模式还是依赖注入,调用类与实现类不可能没有任何依赖,工厂模式中工厂类通常根据参数来判断该实例化哪个实现类,Spring IOC将需要实例的类在配置文件文件中配置。使用Spring IOC能得到工厂模式同样的效果,而且编码更加简洁。3.数据持久层

Hibernate是一个ORM工具,它不仅仅是实现了数据库访问性能优化和与数据库交互的常用操作(CRUD),还将数据表与对象进行了关联,让开发人员可以脱离数据表,而直接针对对象来与数据库交互,开发人员不再需要用字符串去描述表中字段,这使得编码中可书写性提高。

在本系统中已经抽象出了一个CRUD DAO组件基类,利用JDK5.0的泛型技术,每个继承此组件基类的DAO都持有自身的持久对象类型,非常方便操作。在此基类中涵盖了大多数数据库操作方法,如CRUD,分页,属性查询等。[3]

参考资料

[1] J2EE[EB] 百度百科http://baike.baidu.com/view/1507.htm [2] J2EE中三种框架Spring + Struts +Hibernate [EB] 百度百科http://baike.baidu.com/view/16184.htm#sub5909255 [3] 李刚.轻量级Java EE 企业应用实战 Struts2+Spring3+hibernate整合开发[M] 北京:电子工业出版社,2012

第五篇:面试题总结

SSH面试题总结

题目1:Hibernate工作原理及为什么要用?

原理:

hibernate,通过对jdbc进行封装,对 java类和 关系数据库进行mapping,实现了对关系数据库的面向对象方式的操作,改变了传统的jdbc + sql操作数据的方式,从而使开发人员可以话更多精力进行对象方面的开发

1.读取并解析配置文件

2.读取并解析映射信息,创建SessionFactory 3.打开Sesssion 4.创建事务Transation 5.持久化操作 6.提交事务 7.关闭Session 8.关闭SesstionFactory 为什么要用:

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

2.Hibernate是一个基于JDBC的主流持久化框架,是一个优秀的ORM实现。他很大程度的简化DAO层的编码工作

3.hibernate的性能非常好,因为它是个轻量级框架。映射的灵活性很出色。它支持各种关系数据库,从一对一到多对多的各种复杂关系。

题目2: 什么是Hibernate延迟加载

延迟加载机制是为了避免一些无谓的性能开销而提出来的,所谓延迟加载就是当在真正需要数据的时候,才真正执行数据加载操作。在Hibernate中提供了对实体对象的延迟加载以及对集合的延迟加载,另外在Hibernate3中还提供了对属性的延迟加载。

题目3:Hibernate中类之间的关联关系有几种(如:一对多、多对多的关系)

many-to-one、one-to-many、many-to-many、one-to-one

题目4: 说下Hibernate的缓存机制

一、hibernate一级缓存

(1)hibernate支持两个级别的缓存,默认只支持一级缓存;(2)每个Session内部自带一个一级缓存;

(3)某个Session被关闭时,其对应的一级缓存自动清除;

二、hibernate二级缓存

(1)二级缓存独立于session,默认不开启; 题目5: Hibernate的查询方式 本地SQL查询、Criteria、Hql

题目6: 如何优化Hibernate? 1.使用双向一对多关联,不使用单向一对多 2.不用一对一,用多对一取代 3.配置对象缓存,不使用集合缓存

题目7: Struts工作机制?为什么要使用Struts? 工作机制:

Struts的工作流程: 在web应用启动时就会加载初始化ActionServlet,ActionServlet从 struts-config.xml文件中读取配置信息,把它们存放到各种配置对象 当ActionServlet接收到一个客户请求时,将执行如下流程.-(1)检索和用户请求匹配的ActionMapping实例,如果不存在就返回请求路径无效信息;-(2)如果ActionForm实例不存在,就创建一个ActionForm对象,把客户提交的表单数据保存到ActionForm对象中;-(3)根据配置信息决定是否需要表单验证.如果需要验证,就调用ActionForm的validate()方法;-(4)如果ActionForm的validate()方法返回null或返回一个不包含ActionMessage的ActuibErrors对象, 就表示表单验证成功;-(5)ActionServlet根据ActionMapping所包含的映射信息决定将请求转发给哪个Action,如果相应的 Action实例不存在,就先创建这个实例,然后调用Action的execute()方法;-(6)Action的execute()方法返回一个ActionForward对象,ActionServlet在把客户请求转发给 ActionForward对象指向的JSP组件;-(7)ActionForward对象指向JSP组件生成动态网页,返回给客户;

为什么要用:

1.JSP、Servlet、JavaBean技术的出现给我们构建强大的企业应用系统提供了可能。但用这些技术构建的系统非常的繁乱。2.基于Struts开发的应用: 不用再考虑公共问题 专心在业务实现上

结构统一,易于学习、维护 新手也可写出好程序

题目10:为什么要用spring Spring是一个轻量级的IOC和AOP框架。

IOC(控制反转)意味着将你设计好的类交给系统去控制,而不是在你的类内部控制。这称为控制反转

AOP(面向切面),它将那些影响多个类的行为封装到可重用的模块中,面向对象是把问题从同类事物中抽象出来,面向切面是把问题从不同类问题中抽象出来。

1.hibernate中get()与load()区别

请注意如果没有匹配的数据库记录,load()方法可能抛出无法恢复的异常(unrecoverable exception)。如果类的映射使用了代理(proxy),load()方法会返回一个未初始化的代理,直到你调用该代理的某方法时才会去访问数据库。若你希望在某对象中创建一个指向另一个对象的关联,又不想在从数据库中装载该对象时同时装载相关联的那个对象,那么这种操作方式就用得上的了。如果为相应类映射关系设置了batch-size,那么使用这种操作方式允许多个对象被一批装载(因为返回的是代理,无需从数据库中抓取所有对象的数据)。如果你不确定是否有匹配的行存在,应该使用get()方法,它会立刻访问数据库,如果没有对应的行,会返回null。

17.[Hibernate题目]判断题:使用save/persist一个对象时,便立即向数据库发送执行insert sql语句?

1)persist把一个瞬态的实例持久化,但是并“不保证”标识符被立刻填入到持久化实例中,标识符的填入可能被推迟到flush的时间。

2)persist“保证”当它在一个transaction外部被调用的时候并不触发一个Sql Insert,这个功能是很有用的。

3)save会立即执行Sql insert,不管是不是在transaction内部还是外部.18.[Hibernate题目]:指出一下代码哪里错误使用了Hibernate。

背景简介:Board是一个实体类,id是它的主键,name和description是他的两个属性。BoardDao是Board实体的数据访问对象,BoardBo是业务对象,用户提交变更Board对象的请求,由Struts的BoardAction接收,调用BoardBo处理。HibernateUtil.currentSession()用于返回当前请求的Session对象。//数据访问层代码:BoardDao.java

publicBoardloadBoard(Longid){

Sessionsession=HibernateUtil.currentSession();

returnsession.load(Board.class,id);

}

publicvoidupdateBoard(Boardboard){

Sessionsession=HibernateUtil.currentSession();

session.update(board);

}

//业务对象层代码:BoardBo.java

privateBoardDaoboardDao;

publicvoidupdateBoard(Longid,Stringname,Stringdescription){

Boardboard=boardDao.loadBoard(id);

board.setName(name);

board.setDescription(description);

boardDao.updateBoard(board);

}

//Web控制器代码:BoardAction.java

privateBoardBoBoardBo;

publicActionForwardexecute(ActionMappingmapping,ActionFormform, HttpServletRequestrequest,HttpServletResponseresponse)throwsException{

Stringid=request.getParameter(“id”);

Stringname=request.getParameter(“name”);

Stringdescription=request.getParameter(“description”);

boardBo.updateBoard(id,name,description);

returnmapping.findForward(“update-success”);

}

6.public void updateBoard(Board board){ 7.Session session = HibernateUtil.currentSession();Transaction t=session.beginTransaction();8.session.update(board);t.commit();9.}

简单叙述一下Spring中BeanFactory与ApplicationContext的差别 使用BeanFactory从xml配置文件加载bean: importorg.springframework.beans.factory.xml.XmlBeanFactory;importorg.springframework.core.io.FileSystemResource;

publicclassXmlConfigWithBeanFactory{

publicstaticvoidmain(String[]args){ XmlBeanFactoryfactory=newXmlBeanFactory(newFileSystemResource(“build/beans.xml”));} } 使用ApplicationConText从xml配置文件加载bean: publicclassXmlConfigWithApplication{

publicstaticvoidmain(String[]args){ ApplicationContextapplication=newClassPathXmlApplicationContext(beans.xml“));application.getBean(”BeanName“);} } 简而言之,BeanFactory提供了配置框架和基本的功能,而 ApplicationContext为它增加了更强的功能,这些功能中的一些或许更加接近J2EE并且围绕企业级应用。一般来说,ApplicationContext是 BeanFactory的完全超集,任何BeanFactory功能和行为的描述也同样被认为适用于ApplicationContext 相对于BeanFactory而言,ApplicationContext 提供了以下扩展功能.(a)国际化支持(b)资源访问

(c)事件传播(d)多实例加载

2.写一段程序,使用springAPI读取classpath下的一个xml文件,并解析(1)Resource resource=new ClassPathResource(”appcontext.xml“);BeanFactory factory=new XmlBeanFactory(resource);

(2)ClassPathXmlApplicationContext appcontext=new ClassPathXmlApplicationContext(”appcontext.xml“);BeanFactory factory=(BeanFactory)appcontext;

4.说说在hibernate中使用Integer做映射和使用int做映射之间有什么差别 Integer code和int code;的区别: Integer是对象.code = null;对象可以为空.int 是普通类型, 不可能 = null.根据你的数据库code是可以空的, 故应该映射成Integer.你没理由hbm.xml里写Integer, 类里却写int

(1)使用Spring如何简化了Hibernate编码?

通过org.springframework.orm.hibernate3.support.HibernateDaoSupport类支持数据库操作,且封装了事务.public class AccountDAO extends HibernateDaoSupport implements IAccountDAO{

(2)Spring如何与Struts集成?

(3)如何使用Spring2.0实现声明式事务?

(4)依赖注入的好处是? 程序可扩展性更强;利于并行开发;

(5)Spring怎么实现依赖注入?

(6)“面向方面编程”的好处是? 将程序中涉及的公共问题集中解决

(7)和SQL相比,HQL有哪些特点?

HQL是面向对象的查询语言。select Fw表示查询Fw对象

(8)如何配置单向多对一关联?

(9)如何配置单向一对多关联?

(10)如何配置双向一对多关联?

下载SSH总结面试题word格式文档
下载SSH总结面试题.doc
将本文档下载到自己电脑,方便修改和收藏,请勿使用迅雷等下载。
点此处下载文档

文档为doc格式


声明:本文内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:645879355@qq.com 进行举报,并提供相关证据,工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。

相关范文推荐

    (优质)宝剑锋从磨砺出,磨砺Ssh

    优质范文: 宝剑锋从磨砺出 经过严寒的考验,梅花变得更加美丽。 经过冰雪的重压,松柏变得更加挺拔。 经过风雨的打击,雨燕变得更加矫健。 梅花香自苦寒来,宝剑锋从磨砺出。人也是......

    公务员面试题(总结)

    政策理解型。比如,“如何理解科学发展观?”“如何理解和谐社会?”“谈谈你对以人为本的认识”等。这类问题与国家大政方针有关,要考生对国家大政方针熟知并能结合报考职位......

    Unity3d面试题总结

    本人总结的一些Unity3d高频面试题目,希望可以帮助到大家。 限于个人水平有限,只附上一些参考答案。 ======================================= 数据结构和算法很重要,图形学也......

    房地产面试题总结

    1 .在决定这一职位聘用什么人时,你认为那些资格是最重要的? 答:我认为21世纪对企业提出了一些真正的挑战,如果是招聘者的话,不管什么职位,我会考略以下几个方面:既可以决策......

    社区面试题总结

    请说下你为什么想要进社区工作? 答:我将主要从以下几个方面回答这个问题.首先,从社会发展的角度来说,科学发展观的思想告诉我们,社会主义和谐社会的核心是社会的安定有序。社区是......

    Java面试题总结

    二、Get和Post的区别 1.get是从服务器上获取数据,post是向服务器传送数据, 2.get传送的数据量较小,不能大于2KB。post传送的数据量较大,一般被默认为不受限制。 3.get安全性非......

    ETC 面试题总结

    ETC 面试 ETC 面试 ......................................................................................... 1 一、 测试 ..............................................

    面试题总结(推荐5篇)

    1、你简单介绍一下自己? 我叫李洋,25岁,毕业于天津城市职业学院,大专学历。我曾获得过计算机一级证书,会计从业资格证书。我是一个兴趣广泛,乐观向上的人,两年前我参加了“天津市公......