版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
SSH框架经典面试题(含答案)本套面试题聚焦企业Java后端面试高频考点,覆盖Struts2、Spring、Hibernate三大框架基础、核心原理、整合流程、实战踩坑及性能优化问题,贴合真实面试场景,无冗余理论,侧重实操和原理理解。一、基础概念类(入门高频)1.简单说说你对SSH框架的理解,三大框架各自的作用是什么?SSH是JavaWeb经典三层架构整合框架,由Struts2、Spring、Hibernate组成,三者各司其职,实现代码解耦、分层开发,提升项目可维护性和开发效率。各框架核心作用:1.Struts2:属于MVC表现层框架,主要负责接收前端浏览器的请求,参数封装、请求分发、页面跳转、数据校验,处理视图与控制器的交互,承接前端和业务层。2.Spring:属于容器核心框架,核心是IoC(控制反转)和AOP(面向切面编程),负责项目整体的组件管理、依赖注入、事务控制、切面增强,整合Struts2和Hibernate,统筹整个项目的对象生命周期。3.Hibernate:属于ORM持久层框架,封装JDBC操作,实现数据库表与Java实体类的映射,无需手动编写原生SQL,即可完成增删改查操作,简化数据持久化开发。2.简述SSH框架的整体执行流程1.前端用户发起请求,请求被Struts2的核心过滤器StrutsPrepareAndExecuteFilter拦截;2.过滤器解析请求路径,匹配对应的Action,同时完成请求参数自动封装;3.Action调用Spring容器中对应的业务逻辑Service组件,所有Service由Spring统一管理、依赖注入;4.Service层调用持久层DAO组件,DAO层通过Hibernate操作数据库;5.Hibernate执行数据读写操作,返回结果逐层回调给Service、Action;6.Action处理完成后,返回逻辑视图,Struts2根据配置跳转对应页面,响应前端请求。3.MVC模式在SSH框架中是如何体现的?1.Model(模型层):包含Entity实体类、Service业务层、DAO持久层,负责数据封装和业务逻辑处理;2.View(视图层):JSP、HTML等前端页面,负责数据展示和用户交互;3.Controller(控制层):Struts2的Action,负责接收请求、调度业务、控制页面跳转,实现视图和模型的解耦。二、Struts2核心面试题1.Struts2的核心组件和核心配置文件是什么?核心组件:1.核心过滤器:StrutsPrepareAndExecuteFilter,是所有请求的入口,负责拦截、预处理、分发请求;2.Action:核心控制器,处理具体业务请求,接收参数、调用业务方法、返回视图;3.Result:视图跳转组件,定义请求处理后的页面跳转规则;4.Interceptor:拦截器,提供请求预处理、后处理功能,如参数封装、权限校验、异常处理。核心配置文件:struts.xml(核心业务配置)、perties(全局参数配置)、web.xml(过滤器注册配置)。2.Struts2拦截器的作用,以及常用内置拦截器有哪些?拦截器是Struts2的核心特性,采用AOP思想,在Action执行前后进行预处理和后处理,可实现通用功能抽离,避免代码冗余。拦截器可自定义,也可使用内置拦截器,支持链式执行。常用内置拦截器:1.params拦截器:自动封装前端请求参数到Action成员变量;2.prepare拦截器:预处理拦截器,执行Action预处理方法;3.validation拦截器:数据校验拦截器,完成表单数据合法性校验;4.fileUpload拦截器:文件上传拦截器,封装文件上传逻辑;5.exception拦截器:全局异常捕获拦截器,统一处理请求异常。3.Struts2中Action的生命周期,是否是单例?Struts2的Action是多例模式,每次请求都会创建一个全新的Action对象,请求结束后对象销毁。生命周期:客户端发起请求→过滤器拦截请求→创建Action实例→执行拦截器链→执行Action业务方法→返回Result视图→请求结束,Action对象回收。补充:不同于SpringMVC的Controller单例,Struts2Action多例可以完美避免线程安全问题,无需担心成员变量数据共享冲突。4.Struts2参数接收的三种方式1.属性驱动:直接在Action中定义与前端参数名一致的成员变量,提供get/set方法,由params拦截器自动封装,简单常用;2.模型驱动:Action实现ModelDriven接口,重写getModel方法,返回实体对象,参数直接封装到实体类中,适合表单参数较多的场景;3.域对象接收:通过HttpServletRequest、Session等域对象手动获取参数,灵活性高但代码冗余,较少使用。三、Spring核心面试题(SSH整合核心)1.解释Spring的IoC控制反转和DI依赖注入IoC(控制反转):是Spring的核心思想,将对象的创建、初始化、销毁、依赖关系管理的权限,从业务代码中剥离,交给Spring容器统一管理。传统开发中程序员主动创建对象,IoC模式下由容器主动创建和分配对象,实现控制权反转。DI(依赖注入):是IoC的具体实现方式,容器自动将依赖的对象注入到目标组件中,无需手动new对象,彻底解耦组件之间的依赖关系。常用注入方式:构造器注入、setter方法注入、注解注入(@Autowired、@Resource)。2.SpringAOP的原理和应用场景AOP即面向切面编程,基于动态代理机制,在不修改原有业务代码的前提下,对方法进行增强,抽取公共通用逻辑,实现代码解耦。核心术语:切面、切入点、通知(前置、后置、异常、环绕通知)、目标对象、代理对象。常用应用场景:事务管理、日志记录、权限校验、性能监控、异常统一处理、缓存控制。3.Spring的事务管理机制,SSH中如何配置事务?Spring支持声明式事务和编程式事务,项目中主流使用声明式事务,基于AOP实现,无需手动编写事务开启、提交、回滚代码。SSH框架事务配置方式:1.配置事务管理器:HibernateTransactionManager,适配Hibernate持久层;2.配置事务通知:设置事务传播行为、隔离级别、回滚规则;3.配置AOP切面:绑定业务层Service方法,对指定方法开启事务控制。核心规则:通常对add、update、delete修改类方法开启事务,查询类方法无需事务。4.Spring中Bean的作用域有哪些?默认是什么?1.singleton(单例):默认作用域,整个Spring容器中仅创建一个Bean实例;2.prototype(多例):每次获取Bean都会创建新实例;3.request:每次HTTP请求创建一个Bean,请求结束销毁;4.session:每个用户会话对应一个Bean,会话失效销毁;5.application:整个Web应用生命周期一个实例。四、Hibernate核心面试题1.Hibernate的ORM思想是什么?核心作用?ORM即对象关系映射,核心是建立Java实体类与数据库表的映射关系,通过操作Java对象,即可间接操作数据库,彻底封装原生JDBC和SQL语句。核心作用:简化持久层开发、减少重复JDBC代码、实现数据库与Java代码的解耦,支持跨数据库适配,无需修改业务代码即可切换数据库。2.Hibernate的核心接口有哪些?各自作用?1.Configuration:加载Hibernate配置文件(hibernate.cfg.xml),初始化环境;2.SessionFactory:会话工厂,重量级单例对象,负责创建Session,整个项目全局唯一;3.Session:会话对象,轻量级,负责数据库增删改查操作,是持久层核心操作对象;4.Transaction:事务接口,负责事务的开启、提交、回滚;5.Query:查询接口,执行HQL语句,实现复杂数据查询。3.Hibernate一级缓存和二级缓存的区别一级缓存(Session缓存):1.自带、默认开启,无需手动配置;2.作用域为单次Session会话,会话关闭后缓存清空;3.缓存当前会话查询的数据,避免重复查询数据库。二级缓存(SessionFactory缓存):1.全局缓存,默认关闭,需要手动配置开启;2.作用域为整个项目,所有Session共享缓存数据;3.适合缓存高频查询、低频修改的静态数据,如字典数据、分类数据,有效提升查询性能。4.Hibernate中get和load方法的区别1.查询机制:get方法立即执行SQL查询数据库;load方法采用懒加载,返回代理对象,使用对象属性时才查询数据库;2.空值处理:get查询不到数据返回null;load查询不到数据抛出ObjectNotFoundException异常;3.缓存优先级:两者都会先查询一级缓存,无数据再查询数据库,load更适合懒加载场景,提升性能。五、SSH框架整合核心面试题(重中之重)1.说说SSH三大框架的整合思路和核心配置整体整合核心:Spring统筹全局,管理Struts2的Action和Hibernate的SessionFactory、事务,实现三层架构无缝衔接。1.整合Spring与Struts2:引入struts2-spring-plugin插件,让Struts2的Action交由Spring容器管理,通过依赖注入为Action注入Service组件,解除Struts2自身的对象创建逻辑。2.整合Spring与Hibernate:在Spring配置文件中配置SessionFactory,引入Hibernate的数据库连接参数、映射文件;由Spring管理Hibernate事务、Session生命周期,替代原生Hibernate的手动事务操作。3.统一分层架构:Action层(Struts2)→Service层(Spring管理,带事务)→DAO层(Hibernate持久化),形成完整调用链路。2.SSH整合中为什么Service层必须加事务?DAO层能不能加事务?1.事务添加在Service层是行业规范:Service层封装完整的业务逻辑,一个业务方法可能包含多个DAO操作,需要保证多个数据库操作要么全部成功、要么全部回滚,保证业务数据一致性;2.DAO层不建议加事务:DAO层仅负责单一的数据操作,粒度太小,若在DAO加事务,多个DAO组合的业务逻辑无法实现统一事务控制,会出现数据不一致问题。3.SSH项目中常见的线程安全问题有哪些?如何解决?1.Struts2Action多例无线程安全问题,但如果手动定义静态成员变量,会出现数据共享冲突,禁止在Action中定义静态业务变量;2.Spring的Service、DAO默认单例,无状态情况下线程安全,禁止在Service中定义成员变量存储业务数据;3.HibernateSession非线程安全,Spring通过动态代理保证每个线程获取独立Session,无需手动管理,避免多线程冲突。六、实战踩坑与优化面试题1.Hibernate懒加载异常(LazyInitializationException)产生原因及解决方案产生原因:Session会话已关闭,程序继续访问懒加载的关联属性,无法查询数据库,抛出异常。常见于查询数据后,在视图层使用关联对象属性。解决方案:1.开启OpenSessionInView过滤器,延长Session生命周期至页面渲染完成;2.修改映射配置,将关联关系改为立即加载;3.在业务层提前初始化需要使用的关联数据。2.SSH项目性能优化方案有哪些?1.Hibernate优化:合理使用一级、二级缓存;避免全表查询,使用分页查询;杜绝N+1查询问题;懒加载合理配置;2.Spring优化:合理设置Bean作用域,避免频繁创建重量级对象;细化事务传播行为,缩小事务范围;3.Struts2优化:精简拦截器链,移除无用拦截器;合理配置参数封装,避免无效数据校验;4.通用优化:数据库索引
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026-2027学年初中数学七年级下册(新教材)鲁教版(五四制)(新教材)3 等可能事件的概率课时达标卷
- 安全与礼仪课件
- 安全与急救知识
- 初中一年级语文《雨的四季》第二课时教案
- 摩根士丹利-摩根士丹利2026年秋季训练营:欧洲银行-Morgan Stanley Autumn Bootcamp 2026 European Banks-20261027
- 安全用电知识讲义
- 甘肃省酒泉市2024-2025学年高一下学期期末考试英语试题
- 江苏南通市如东县2025-2026学年度高一年级第二学期期中考试数学试题
- 安全用电培训课件
- 2026年企业新员工跨文化交际能力测试卷
- 电商平台信用风险评价的机器学习模型研究
- T-CRACM 0003-2025 中医体质药食同源膏方标准
- 船坞工程施工技术
- DB11∕T 1200-2023 超长大体积混凝土结构跳仓法技术规程
- QGDW1175-2013变压器高压并联电抗器和母线保护及辅助装置标准化设计规范
- 智慧方案国家电投综合智慧能源产业发展之路
- 木门定制合同协议书模板
- 共同贷款还款协议书
- 绑定终端操作指南
- 中外航海文化知到课后答案智慧树章节测试答案2025年春中国人民解放军海军大连舰艇学院
- 偏瘫的运动功能评定讲解
评论
0/150
提交评论