Struts+Spring+Hibernate面试精华:线程安全、架构与关键技术
需积分: 9 155 浏览量
更新于2024-08-01
收藏 100KB DOC 举报
本文档主要围绕Struts、Spring和Hibernate这三个流行的Java Web开发框架进行深入探讨,旨在帮助求职者准备面试中关于这三个技术栈的问题。以下是详细的知识点解析:
1. **Struts Action的线程安全性**:
Struts的Action并非线程安全,因为每个Action实例可能会被多个请求共享,导致数据不一致。为了保证线程安全,可以采取以下策略:
- 声明局部变量,使得每次请求都创建一个新的Action实例。
- 使用Spring的`prototype`作用域,Spring会为每个请求创建一个新的Action实例。
2. **Struts的MVC架构**:
- Model(M): Struts主要通过JavaBean或EJB组件(如业务逻辑层)构建模型,处理业务逻辑。
- View(V): 由JSP页面和标签库组成,负责展示用户界面。
- Controller(C): 动作(Action)类是控制器,接收用户的请求并调用Model处理,然后将结果返回给View。
3. **Struts的关键对象**:
- `Action`: 控制器,负责处理HTTP请求,调用业务逻辑。
- `ActionForm`: 表单对象,用于保存用户输入数据。
- `DynaValidatorForm`: 动态表单,提供了更灵活的验证机制。
- `ActionMapping`: 配置文件中的动作映射,定义了Action与URL之间的关系。
4. **Spring的AOP和IoC**:
- AOP (面向切面编程): 用于模块化关注点(如日志、事务管理),在运行时动态地应用这些关注点,提高代码的可维护性。
- IoC (依赖注入): Spring的核心概念,允许在运行时自动管理对象间的依赖关系,降低了代码耦合度。
5. **Hibernate查询方式**:
Hibernate支持多种查询数据方式:
- HQL (Hibernate Query Language): 高级SQL查询语言,面向对象的查询方式。
- SQL查询: 直接使用原生SQL语句。
- 条件查询: 提供了Criteria API和HQL表达式,实现基于条件的灵活查询。
6. **Hibernate的`load()`与`get()`方法区别**:
- `load()`: 异步加载,假设数据存在,返回懒加载的代理对象,如果不存在则抛出异常。它会优先检查session缓存。
- `get()`: 如果数据在一级缓存中,直接返回;否则查询二级缓存或数据库,如果没有找到则返回null。
7. **Hibernate的延迟加载和`openSessionInView`**:
- 延迟加载: 仅在真正需要数据时才会从数据库加载,提高性能。需在session作用域内使用。
- `openSessionInView`: 开启策略,使得每个HTTP请求开始时都会打开一个持久化上下文,直到请求结束,有助于减少事务管理复杂性,但可能导致内存消耗增加。
掌握以上知识点,不仅能够提升在Struts+Spring+Hibernate面试中的表现,还能加深对这三个框架的理解和实际应用能力。
2011-10-29 上传
2022-11-11 上传
2010-07-29 上传
2021-09-17 上传
2022-11-11 上传
2023-05-25 上传
2019-07-15 上传
2011-11-25 上传
ycm236815131
- 粉丝: 3
- 资源: 14
最新资源
- 电脑机房施工建设方案2
- The_Debian_System 2005
- spring开发指南(夏昕)
- 无线上网技巧、天线制作 可免费上网
- the c++ programming language
- 软考 软件设计师大纲比较
- 86~09年考研英语真题及答案
- linux多线程编程PDF
- Smashing The Stack For Fun And Profit
- flash8 actionscript2.0
- cotex m3 definitive course
- flashcs4 组件编程电子书
- WPF编程宝典 英文原版
- WinCE系统下BootLoader的开发.pdf
- PHP工作流引擎(中文)
- c# aspnet 获取外网ip