SSH面试精华:Struts2+Hibernate+Spring核心知识点

4星 · 超过85%的资源 需积分: 15 5 下载量 179 浏览量 更新于2024-07-25 收藏 60KB DOC 举报
本文档是一份针对Java初学者的SSH(Struts2, Spring, Hibernate)面试题集,涵盖了这些流行的Java Web开发框架的核心概念和技术细节。以下是对每个问题的详细解析: 1. **Action的线程安全性**: - Struts2的Action并非线程安全。为确保线程安全,可以通过以下方式实现: - 声明局部变量,每次请求创建一个新的Action实例。 - 扩展RequestProcessor并实现每次请求独立处理。 - 在Spring中使用`scope="prototype"`属性来管理Action实例,这样每次请求都会创建新的实例。 2. **Struts2的MVC架构解析**: - MVC模式在Struts2中是通过以下组件实现的: - Model:使用JavaBean、EJB组件或POJO(Plain Old Java Object)作为数据模型。 - Controller:Action类负责接收用户请求,调用业务逻辑并控制视图操作。 - View:JSP页面及其标签,用于呈现结果。 3. **Struts2关键对象的作用**: - Action:控制器,处理HTTP请求,与视图进行交互。 - ActionForm:表单对象,用于接收用户输入的数据。 - DynaValidatorForm:动态表单,提供数据验证功能。 - ActionMapping:配置文件中定义的Action映射关系,用于路由请求。 4. **AOP和IoC在Spring中的应用**: - AOP(面向切面编程):关注点分离技术,Spring中通过AspectJ或Spring AOP实现,如事务管理、日志等。 - IoC(Inversion of Control):控制反转,Spring容器负责对象的生命周期管理和依赖关系注入。 5. **Hibernate查询方式**: - HQL(Hibernate Query Language):面向对象的SQL查询语言,用于编写复杂的SQL查询。 - SQL查询:直接使用原始SQL语句,通常在特殊情况下使用。 - 条件查询:基于HQL的参数化查询,提高代码复用性和安全性。 6. **load()和get()方法的区别**: - load()方法假设数据存在,如果不存在会抛出`ObjectNotFoundException`,在session作用域内延迟加载。 - get()方法更严谨,即使在缓存中找不到也会返回null,不会抛异常。它会首先检查一级缓存,然后二级缓存,最后数据库。 7. **Hibernate的延迟加载和openSessionInView**: - 延迟加载:在实际使用对象的属性时才从数据库加载,降低数据库负载。 - openSessionInView:将Session开启在请求的整个视图阶段,确保在视图层之前数据已加载完毕,避免因频繁创建Session导致性能问题。 这份面试题集对于理解和准备Struts2、Spring和Hibernate的面试非常重要,它能帮助新手开发者深入理解这些框架的工作原理、最佳实践以及它们之间的协作方式。