"SSH历年面试题"
在Java Web开发领域,SSH(Struts、Spring、Hibernate)是一个常见的框架组合,用于构建高效、可维护的Web应用程序。这些面试题聚焦于SSH框架,特别是Struts和MVC设计模式。
**MVC设计模式**
MVC模式是一种软件设计模式,它将应用程序分为三个核心组件:模型(Model)、视图(View)和控制器(Controller)。这种分离有助于提高代码的组织性和可维护性。
- **模型(Model)**:负责业务逻辑和数据管理。它可以是一个或多个JavaBean,存储和处理应用程序的数据。模型与数据源交互,例如数据库,更新数据并提供给其他组件。
- **视图(View)**:展示数据给用户。视图通常由JSP页面或HTML组成,它负责将模型中的数据以用户友好的形式展现出来。视图只负责展示,不包含任何业务逻辑。
- **控制器(Controller)**:充当模型和视图之间的桥梁。当用户在界面上进行操作,如点击按钮,控制器接收请求,调用模型进行处理,然后根据处理结果决定如何更新视图。
**Struts框架**
Struts是基于MVC模式的Java Web框架,主要用于处理HTTP请求和响应。
- **Struts 1.2与2.0的区别**
- **Action类**:在Struts 1.2中,Action类需要继承特定的基类,而在Struts 2.0中,Action类一般继承自ActionSupport。
- **线程模式**:Struts 1.2的Action是单例的,需要确保线程安全;而Struts 2.0为每个请求创建一个新的Action实例,因此不存在线程安全问题。
- **Servlet依赖**:Struts 1.2的Action直接依赖于Servlet API,而Struts 2.0则降低了对Servlet API的依赖,使得Action更易于独立测试。
- **可测性**:Struts 2.0更便于单元测试,因为它不直接依赖于HttpServletRequest和HttpServletResponse,减少了对容器的依赖。
**Struts的单例模式控制**
在Struts 1.2中,由于Action是单例的,开发者需要确保所有实例变量都是线程安全的,或者在访问它们时进行适当的同步。可以通过以下方式控制:
1. 使用线程安全的数据结构(如ThreadLocal)来存储会话或请求特定的数据。
2. 在Action类中避免使用可变的实例变量,而是使用局部变量或静态变量。
3. 如果必须使用实例变量,确保它们是不可变的或者在访问时进行同步。
Struts 2.0通过为每个请求创建新的Action实例,避免了上述问题,从而简化了开发和测试。
总结,理解和掌握SSH框架,尤其是MVC设计模式和Struts的使用,对于Java Web开发者来说至关重要。这些面试题覆盖了核心概念和常见区别,可以帮助求职者准备面试,提升自己的技能水平。