<!-- TOC --> - Spring MVC常见知识点及源码解析 - MVC 是什么 / 有什么优点? - 什么是 Spring MVC? - Spring MVC的优缺点? - 什么是DispatcherServlet? - Spring MVC有哪些组件?(见:DispatcherServlet源码) - 简述SpringMVC原理/执行流程 - Spring MVC 拦截器是什么 / 有什么作用 / 与 Filter有什么区别? - @Component @Controller @Service @Repository 区别? <!-- /TOC --> Spring MVC常见知识点及源码解析 MVC 是什么 / 有什么优点? MVC是一种设计模式,遵循 模型(Model),视图(View) 和 控制器(Controller)的架构设计。 MVC的优点很明显: 应用层次分明,职责分明,使得系统的耦合性降低,并有利于系统的维护。 什么是 Spring MVC? Spring MVC是一个基于Spring框架的轻量级的MVC W ### SpringMVC常见知识点及源码解析 #### MVC是什么/有什么优点? MVC(Model-View-Controller)是一种广泛应用于软件工程的设计模式,主要用于构建易于维护的用户界面。该模式将应用程序逻辑分为三个核心组成部分: - **模型(Model)**:负责管理应用程序的数据逻辑以及业务规则,通常包括数据访问层和业务逻辑层。 - **视图(View)**:负责展示数据给用户,即用户界面上显示的内容。 - **控制器(Controller)**:负责接收用户的输入并调用模型和视图完成用户的需求。 MVC模式的主要优点包括: - **清晰的分层**:通过明确地将应用程序分为三个不同的部分,使代码更易于理解和维护。 - **可维护性**:由于各部分职责明确,因此在修改或扩展功能时,可以更容易地定位问题并做出更改。 - **可复用性**:模型、视图和控制器都是独立的,这意味着它们可以在不同的项目中复用。 - **易于测试**:特别是对于控制器和模型,它们通常是无状态的,便于单元测试。 #### 什么是SpringMVC? SpringMVC是一个基于Spring框架的Web应用程序框架,它是Spring框架的一部分,用于构建灵活且可扩展的Web应用。SpringMVC采用了MVC设计模式,它简化了Web开发的过程,提供了丰富的功能支持,如表单提交、上传、国际化支持等。 #### SpringMVC的优缺点? **优点**: 1. **基于Spring**:继承了Spring框架的所有优点,例如依赖注入、面向切面编程等。 2. **组件化设计**:SpringMVC内部组件化的设计使得各个部分之间的耦合度较低,便于维护。 3. **支持多种视图技术**:不仅仅限于JSP,还可以支持Thymeleaf、Freemarker等多种视图技术。 4. **强大的功能**:如文件上传、数据验证、格式转换、异常处理等。 5. **支持RESTful风格的API**:符合现代Web开发的趋势。 **缺点**: 1. **与Spring框架紧密耦合**:虽然这是优点也是缺点,但确实意味着SpringMVC不能脱离Spring框架而独立运行。 2. **学习曲线**:对于新手来说,学习SpringMVC可能需要一段时间去熟悉Spring框架的概念和技术。 #### 什么是DispatcherServlet? **DispatcherServlet**是SpringMVC的核心组件,它是一个标准的Servlet,负责接收HTTP请求并将请求分发到合适的Handler。具体来说,DispatcherServlet的作用包括但不限于: - 接收HTTP请求。 - 使用HandlerMapping查找对应的Handler。 - 调用HandlerAdapter来执行Handler。 - 处理异常(通过HandlerExceptionResolver)。 - 解析视图(通过ViewResolver)。 #### SpringMVC有哪些组件? 1. **MultipartResolver**:处理文件上传请求。 2. **LocaleResolver**:处理区域设置的解析。 3. **ThemeResolver**:处理主题的解析,提供不同的视觉样式。 4. **ViewResolver**:解析视图名称并创建视图对象。 5. **HandlerMapping**:将请求映射到合适的Handler。 6. **HandlerAdapter**:适配具体的Handler,使其能够处理请求。 7. **HandlerExceptionResolver**:处理执行Handler过程中出现的异常。 8. **RequestToViewNameTranslator**:将请求转换为视图名称。 9. **FlashMapManager**:管理FlashMap,用于存储临时数据,尤其是在重定向的情况下。 #### 简述SpringMVC原理/执行流程 1. 用户发送HTTP请求至前端控制器**DispatcherServlet**。 2. **DispatcherServlet**委托**HandlerMapping**寻找处理该请求的**Handler**。 3. **DispatcherServlet**通过**HandlerAdapter**调用Handler处理请求。 4. Handler处理完请求后返回一个ModelAndView对象给**DispatcherServlet**。 5. **DispatcherServlet**委托**ViewResolver**解析视图名称并创建视图对象。 6. **DispatcherServlet**对视图对象进行渲染,最后将结果返回给客户端。 #### SpringMVC拦截器是什么/有什么作用/与Filter有什么区别? **拦截器(Interceptor)**是SpringMVC中的一个重要概念,主要用于拦截用户请求,并在请求被处理之前或之后执行一些特定的操作,如权限检查、记录日志、处理异常等。 **拦截器与Filter的区别**: - **生命周期**:拦截器仅在SpringMVC环境下生效,而Filter是基于Servlet规范的,可以在任何Servlet容器中使用。 - **配置方式**:拦截器需要在SpringMVC配置中声明,而Filter则是在web.xml中声明。 - **执行顺序**:拦截器和Filter都可以实现预处理和后处理,但拦截器的执行顺序更加灵活。 #### @Component@Controller@Service@Repository 区别? - **@Component**:泛指任何类型的组件,是最基础的Spring注解,可用于任何类。 - **@Controller**:专门用于标记控制层组件。 - **@Service**:用于标记服务层组件。 - **@Repository**:用于标记数据访问层(DAO层)组件。 这些注解在SpringMVC中扮演着重要的角色,它们使得Spring可以通过依赖注入的方式管理这些组件,进而实现松耦合的架构设计。
- 粉丝: 517
- 资源: 352
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助