SSH框架面试精要:Action线程安全、Spring的AOP与IOC、Hibernate查询

需积分: 3 2 下载量 172 浏览量 更新于2024-09-20 收藏 53KB DOC 举报
"SSH面试题详解" 在面试Java Web开发岗位时,尤其是涉及到基于Struts、Spring和Hibernate(SSH)框架的项目,以下是一些常见问题和答案,可以帮助求职者更好地准备。 1. **Action是否线程安全?** - Action在默认情况下不是线程安全的,因为它们通常作为单例对象存在,多个请求可能会共享同一个实例,从而导致并发问题。 - 确保Action线程安全的方法包括:声明局部变量,每个请求创建新的Action实例;自定义RequestProcessor,确保每次请求都创建新的Action;或在Spring中使用`scope="prototype"`配置Action,使其为原型模式,每次请求都会创建新实例。 2. **Struts如何实现MVC模式?** - Model:通常由JavaBean、EJB组件或POJO(Plain Old Java Object)构成,存储业务数据。 - View:一组JSP文件及其标签,负责展示用户界面。 - Controller:由Action类实现,处理用户请求,调用业务逻辑并决定跳转至哪个View。 3. **Struts中的关键对象及作用** - Action:控制器,处理用户请求,并调用相应的业务逻辑。 - ActionForm:表示用户输入的数据,通常对应于HTML表单。 - DynaValidatorForm:动态表单,允许在运行时动态改变字段属性。 - ActionMapping:存储配置文件中action节点的信息,用于映射URL到特定Action。 4. **AOP和IOC在Spring中的应用** - AOP(面向切面编程):Spring通过AOP实现横切关注点(如日志、事务管理),使代码更清晰、可维护。 - IOC(控制反转):Spring通过IOC容器管理对象的生命周期和依赖关系,实现组件的解耦。 - Spring使用AOP来实现声明式事务管理,而IOC用于依赖注入,使得组件之间的依赖关系可以在运行时动态调整。 5. **Hibernate查询数据的方式** - HQL(Hibernate Query Language):面向对象的查询语言,与SQL类似,但操作对象是持久化类。 - SQL查询:直接执行SQL语句,获取数据。 - 条件查询:使用Criteria API或Query API根据指定条件进行查询。 6. **load()和get()的区别** - load()方法假设数据肯定存在,返回的对象可能是代理,延迟加载到真正使用属性时才查询数据库。如果数据不存在,会在使用时抛出`ObjectNotFoundException`。 - get()方法会首先检查一级缓存,然后二级缓存,最后数据库。如果找不到数据,则返回null。 7. **Hibernate的延迟加载和OpenSessionInView** - 延迟加载:在session范围内,当需要时才加载关联的对象,提高性能。 - OpenSessionInView:一种设计模式,确保在HTTP请求的整个生命周期内保持一个Hibernate Session,以便在视图渲染时能进行延迟加载。这样避免了因关闭Session而导致的懒加载异常。 这些面试问题涵盖了SSH框架的核心概念和技术,对理解这三个框架如何协同工作以及如何在实际项目中应用它们至关重要。熟悉这些问题和答案,将有助于面试者展现出扎实的SSH技术基础。