Java SSH框架面试题及详细答案(真实面试版)_第1页
Java SSH框架面试题及详细答案(真实面试版)_第2页
Java SSH框架面试题及详细答案(真实面试版)_第3页
Java SSH框架面试题及详细答案(真实面试版)_第4页
Java SSH框架面试题及详细答案(真实面试版)_第5页
已阅读5页,还剩2页未读, 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

JavaSSH框架面试题及详细答案(真实面试版)说明:本文档为企业常用SSH(Struts2+Spring+Hibernate)面试真题汇总,包含基础概念、核心原理、框架整合、常见问题、实战踩坑,答案简洁接地气,适配初中级Java后端面试。一、SSH框架基础概念面试题1、简单说说SSH三大框架各自的作用和职责?详细答案:SSH是经典的Java三层架构整合框架,各司其职、解耦分层,具体分工如下:1.Struts2(表现层/控制层):负责接收客户端请求、参数封装、请求分发、页面跳转、数据校验。主要对接浏览器和后端业务,充当控制器角色,处理所有的web请求交互,不负责业务逻辑和数据库操作。2.Spring(业务层/容器):核心是IoC容器和AOP,负责管理所有Java对象的创建、依赖注入、生命周期管理。同时承担事务控制、权限拦截、日志记录、业务模块解耦,整合Struts2和Hibernate,统筹整个项目的资源调度。3.Hibernate(持久层):ORM对象关系映射框架,负责数据库交互。将Java实体类和数据库表做映射,无需手写大量JDBC代码,通过对象操作即可实现增删改查,同时封装了事务、缓存、数据持久化等功能。2、简述SSH整体执行流程?详细答案:1.客户端浏览器发起HTTP请求,请求首先被Struts2的核心过滤器StrutsPrepareAndExecuteFilter拦截;2.过滤器解析请求路径,匹配对应的Action,同时完成请求参数自动封装、数据校验;3.Action被Spring容器管理,通过依赖注入获取对应的Service业务对象;4.Action调用Service层的业务方法,Spring通过AOP机制开启、提交或回滚事务;5.Service层调用Dao层方法,Dao层通过Hibernate操作Session,完成数据库增删改查;6.数据库操作结果逐层返回,Action处理结果后,通过视图跳转机制跳转页面或返回数据;7.客户端接收响应,完成一次完整请求。二、Struts2核心面试题1、Struts2的核心工作原理和执行流程是什么?详细答案:Struts2基于过滤器实现请求拦截,核心流程分为8步:1.客户端发送请求,服务器启动项目,加载核心过滤器StrutsPrepareAndExecuteFilter;2.过滤器拦截所有请求,初始化请求上下文、参数封装、编码统一处理;3.通过配置文件struts.xml匹配请求对应的Action;4.执行拦截器栈(参数校验、权限拦截、文件上传、日志拦截等内置拦截器);5.拦截器执行完毕,调用目标Action的业务方法;6.Action方法执行完成,返回逻辑视图字符串;7.根据逻辑视图匹配struts.xml中配置的物理视图,执行跳转、重定向或数据返回;8.响应客户端,结束请求。2、Struts2的拦截器和过滤器有什么区别?详细答案:1.执行位置不同:过滤器是Servlet规范,在请求进入Action之前、响应返回客户端之前执行;拦截器是Struts2框架独有,仅针对Action请求生效。2.依赖不同:过滤器依赖web容器,所有web请求都会触发;拦截器依赖Struts2框架,只拦截配置的Action请求。3.功能粒度不同:过滤器偏向全局过滤,如编码过滤、静态资源放行;拦截器针对Action方法做精细化拦截,如权限校验、参数校验、事务控制。4.执行顺序:请求先经过过滤器,再经过拦截器,最后进入Action。3、Struts2中Action是单例还是多例?为什么?详细答案:Struts2的Action是多例模式,每次请求都会创建一个新的Action对象。原因:Action中存在成员变量,用于接收前端请求参数,如果是单例,多个用户同时请求会出现参数覆盖、数据错乱的线程安全问题。多例可以保证每个请求独立,互不干扰,彻底解决线程安全问题。补充:Spring默认单例,整合SSH时,需要将Action的scope配置为prototype(多例),否则会出现线程安全隐患。三、Spring核心面试题(SSH重点)1、SpringIoC的原理是什么?有什么作用?详细答案:IoC即控制反转,核心是将对象的创建、依赖管理、生命周期交由Spring容器负责,而非开发者手动new对象。原理:项目启动时,Spring读取xml或注解配置,扫描所有Bean,通过反射机制实例化对象,统一存入IoC容器,同时自动完成依赖注入。程序使用时直接从容器获取对象,无需手动创建。作用:彻底解耦,降低代码耦合度,方便统一管理对象、统一维护、便于测试和后期迭代,也是Spring事务、AOP功能的基础。2、SpringDI依赖注入的三种方式?常用的是哪种?详细答案:三种注入方式:1.构造器注入:通过类的构造方法注入依赖对象,保证对象初始化完成后依赖齐全,安全性高;2.setter方法注入:通过set方法赋值,灵活度高,支持动态修改依赖;3.字段注入:通过@Autowired直接注入,代码简洁。企业SSH项目中最常用setter注入,适配传统xml配置方式,稳定性更好,适配老项目架构。3、SpringAOP的原理和在SSH中的应用场景?详细答案:AOP即面向切面编程,核心是在不修改原有业务代码的前提下,对方法进行增强,基于动态代理实现。SSH项目中核心应用场景:1.声明式事务控制:最核心用途,通过AOP环绕通知,在Service方法执行前开启事务,执行成功提交、异常回滚;2.权限拦截、登录校验;3.系统日志记录、操作日志统计;4.方法性能监控、异常统一捕获处理。4、Spring事务的传播属性和隔离级别,常用的有哪些?详细答案:常用传播属性:1.REQUIRED:默认级别,当前有事务就加入,没有就新建事务(项目最常用);2.SUPPORTS:有事务就运行在事务中,没有就非事务运行;3.REQUIRES_NEW:无论是否有事务,都新建独立事务。常用隔离级别:1.READ_COMMITTED:读已提交,解决脏读,默认级别,企业项目通用;2.REPEATABLE_READ:可重复读,解决不可重复读,MySQL默认隔离级别。四、Hibernate核心面试题1、Hibernate的ORM思想是什么?核心作用?详细答案:ORM是对象关系映射,核心是将Java实体类与数据库表建立映射关系。开发者只需操作Java对象,框架自动转换为SQL语句操作数据库,无需手写大量JDBC、ResultSet、Connection代码。核心作用:简化持久层代码、统一数据库操作、屏蔽不同数据库的SQL差异,实现数据库适配切换,大幅提升开发效率。2、Hibernate的三种状态及相互转换?详细答案:1.瞬时态(临时态):new出来的对象,没有纳入Session管理,数据库无对应数据,无主键id;2.持久态:对象被Session管理,数据库存在对应数据,有主键id,修改对象属性会自动同步数据库;3.脱管态(游离态):数据库有对应数据,但Session已关闭或解除管理,修改属性不会自动同步数据库。状态转换:瞬时态→持久态:save()、saveOrUpdate();持久态→脱管态:close()、evict()、clear();脱管态→持久态:update()、saveOrUpdate()。3、Hibernate一级缓存和二级缓存的区别?详细答案:1.一级缓存(Session缓存):默认开启,不可关闭,属于线程级缓存,仅在单次Session会话内生效,会话关闭缓存清空。主要缓存当前会话查询的数据,避免重复查询数据库。2.二级缓存(SessionFactory缓存):默认关闭,需要手动配置,属于应用级缓存,全局共享,所有Session共享缓存数据。适合缓存高频查询、低频修改的静态数据,如字典、分类数据。4、Hibernateget和load方法的区别?详细答案:1.查询时机不同:get是立即查询,调用方法直接发送SQL查库;load是延迟加载,返回代理对象,使用属性时才查库。2.返回结果不同:get查询不到数据返回null;load查询不到数据抛出异常。3.缓存使用不同:get先查一级缓存,没有直接查库;load优先走缓存,充分利用延迟加载特性。五、SSH框架整合核心面试题(高频)1、SSH整合的核心配置思路是什么?详细答案:1.Spring整合Hibernate:Spring管理SessionFactory、数据源、事务管理器,将Hibernate的Session交由Spring容器管理,统一控制事务,无需手动开启、关闭Session;2.Spring整合Struts2:通过struts2-spring-plugin插件,让Struts2的Action交由Spring容器管理,实现依赖注入,统一管理Action、Service、Dao对象;3.分层配置:web.xml配置核心过滤器、Spring监听器、编码过滤器;通过spring.xml管理业务和持久层,struts.xml管理请求跳转,hibernate.cfg.xml管理数据库映射。2、SSH整合中为什么会出现事务失效?常见原因有哪些?详细答案:事务失效是SSH项目高频问题,常见原因:1.方法权限问题:Spring事务只对public方法生效,private、protected方法事务失效;2.内部调用问题:同一个类中A方法(无事务)调用B方法(有事务),事务失效,不走AOP代理;3.异常类型不对:默认只捕获RuntimeException,普通Exception不会触发回滚;4.Action未配置多例:Action单例导致线程混乱,事务绑定异常;5.手动捕获异常,没有抛出,Spring无法感知异常,不会回滚。3、Struts2和Spring整合时,Action的创建交给谁?为什么?详细答案:整合后Action的创建、管理全部交给Spring容器。原因:如果由Struts2创建Action,无法实现Service、Dao的依赖注入,分层解耦失效。交由Spring管理后,可以通过IoC自动注入业务层对象,同时统一管理对象生命周期、统一控制事务,保证框架整合的完整性。且必须配置Action为多例,避免线程安全问题。六、SSH实战踩坑面试题1、Hibernate懒加载异常(couldnotinitializeproxy-noSession)原因及解决?详细答案:异常原因:Hibernate默认懒加载,查询数据时只查主表,关联对象不查询。当Session关闭后,再访问关联属性,没有会话支持,就会抛出懒加载异常。解决方案:1.开启OpenSessionInView过滤器,让Session贯穿整个请求生命周期,视图渲染完成后再关闭;2.业务层提前加载关联数据,避免页面延迟访问;3.针对单独配置关闭懒加载(不推荐,影响性能)。2、SSH项目中页面参数接收不到的常见原因?详细答案:1.页面参数名和Action成员变量名不一致;2.Action没有对应属性的setter方法,无法自

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论