SpringMVC面试专题1
需积分: 0 118 浏览量
更新于2022-08-08
收藏 17KB DOCX 举报
【SpringMVC面试专题1】
1. **SpringMVC是什么?**
SpringMVC是Spring框架的一个核心模块,它是一个基于Model-View-Controller(MVC)架构的Web应用程序开发框架。SpringMVC允许开发者无需编写过多的Servlet代码,通过声明式配置或注解来处理请求和响应,简化了Web应用的开发流程。
2. **SpringMVC的优点**
- **基于组件技术**:SpringMVC中的所有应用对象,如控制器、视图以及业务对象,都是Java组件,并且与Spring提供的其他基础设施紧密集成。
- **不依赖Servlet API**:尽管在实现时SpringMVC确实依赖Servlet,但其设计目标是尽量减少对Servlet API的依赖。
- **灵活的视图技术**:开发者可以自由选择各种视图技术,不仅限于JSP。
- **多种请求资源映射策略**:SpringMVC提供了多种方式将请求映射到相应的处理方法。
- **可扩展性**:SpringMVC的架构设计使得扩展非常方便,适应不断变化的需求。
3. **SpringMVC的工作原理**
- 客户端向DispatcherServlet发送请求。
- DispatcherServlet查询handlerMapping找到合适的Controller来处理请求。
- Controller执行业务逻辑后,返回ModelAndView对象。
- DispatcherServlet根据ModelAndView找到对应的视图。
- 视图负责将结果渲染回客户端。
4. **SpringMVC的流程**
- 用户请求到达前端控制器DispatcherServlet。
- DispatcherServlet调用HandlerMapping找到具体的处理器。
- HandlerMapping返回处理器对象及可能的拦截器给DispatcherServlet。
- DispatcherServlet使用HandlerAdapter调用处理器。
- 控制器Controller执行后返回ModelAndView。
- HandlerAdapter将Controller的结果返回给DispatcherServlet。
- DispatcherServlet将ModelAndView传递给ViewResolver解析。
- ViewResolver解析后返回具体的View。
- DispatcherServlet根据View渲染视图并将结果响应给用户。
5. **SpringMVC控制器的单例模式问题**
SpringMVC的控制器默认是单例模式,多线程环境下可能导致线程安全问题。解决方案是避免在控制器中定义实例变量,或者使用ThreadLocal来确保线程局部变量的安全。
6. **SpringMVC与Struts2的区别**
- 入口不同:SpringMVC由Servlet(前端控制器)处理,Struts2由Filter(过滤器)处理。
- 开发方式:SpringMVC基于方法,每个URL对应一个方法;Struts2基于类,请求参数通过类的属性传递。
- 数据存取:SpringMVC使用参数解析器,通过方法参数接收和返回数据;Struts2使用值栈和OGNL存取数据。
7. **控制器注解**
在SpringMVC中,通常使用`@Controller`注解标记控制器类,表示该类是表现层的组件。没有其他注解可以直接替代`@Controller`,但可以结合`@RequestMapping`等其他注解进行更细致的路由控制。
8. **@RequestMapping类级别的作用**
`@RequestMapping`注解在类级别上表示类中的所有请求处理方法的公共前缀。
9. **请求映射到特定方法**
可以在方法上直接使用`@RequestMapping`注解,注解中的路径会指定该方法应处理的请求路径。
10. **拦截特定HTTP方法**
若要仅拦截GET请求,可以在`@RequestMapping`注解中添加`method=RequestMethod.GET`,或在方法上使用`@GetMapping`注解。
以上内容涵盖了SpringMVC的基本概念、优点、工作流程、控制器的单例模式问题、与Struts2的对比,以及请求映射等关键知识点,这些是面试中可能会遇到的问题。

傅融
- 粉丝: 32
- 资源: 333
最新资源
- 碳交易与需求响应机制下的综合能源系统优化模型及其应用
- 基于DEMATEL-ISM法的民航飞行员安全能力结构模型及其跨领域应用
- 信号处理领域中软件滤波算法的全面解析及其应用
- C# WinForms工作流表单设计器:基于原生控件的拖拽绘制与控件编辑实现
- 数据结构图论的基础概念、表示方法及典型算法解析
- 光伏发电系统仿真:基于扰动观察法的最大功率点跟踪与储能控制策略
- 数据结构领域中平衡树的原理及其应用解析
- 智能优化算法PSO及其衍生算法(PID、AM、BP)与FOA的Python实现及应用
- 机械工程领域基于Fluent的滑动轴承性能仿真:空化、温度、压力及承载力分析
- 数据结构中查表法的应用及其优势与局限
- 基于Matlab的电梯控制系统中PID控制器的设计与实现
- 数据结构详解:从基础概念到实际应用,开启高效编程之路
- 基于STM32H750VBT6与AD9226的信号采集及FFT分析:嵌入式频谱分析仪实现
- 数据结构入门:单向链表的概念、操作及其应用场景
- 三菱PLC与威纶触摸屏及伺服驱动的自动化控制系统搭建与调试
- 解锁数据结构:线性表的奇妙之旅.pdf