Spring MVC 架构详解

金歌  论坛元老 | 2024-8-11 03:50:57 | 显示全部楼层 | 阅读模式
打印 上一主题 下一主题

主题 1061|帖子 1061|积分 3183

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

x
Spring MVC(Model-View-Controller)是 Spring 框架中用于构建 Web 应用步伐的模块。它通过分离应用步伐的差别方面(输入逻辑、业务逻辑和 UI 逻辑)来简化开发工作。本文将具体介绍 Spring MVC 架构及其根本组件,包括 DispatcherServlet、HandlerMapping、Controller 和 ViewResolver。
Spring MVC 架构

Spring MVC 架构基于经典的 Model-View-Controller 设计模式。它主要包括以下几个部分:


  • Model:用于封装应用步伐的数据和业务逻辑。通常对应于服务层和长期化层。
  • View:用于出现数据给用户。通常是 JSP、Thymeleaf 模板等。
  • Controller:用于处置处罚用户哀求,进行业务处置处罚,并返回视图名称和模子数据。
Spring MVC 通过一系列的组件和接口实现这一架构,以便于开发者构建和管理 Web 应用步伐。
Spring MVC 根本架构

Spring MVC 的根本架构由以下几个焦点组件组成:

  • DispatcherServlet
  • HandlerMapping
  • Controller
  • ViewResolver
我们将逐一介绍这些组件的作用和设置方法。
DispatcherServlet

DispatcherServlet 是 Spring MVC 框架的前端控制器。它负责将用户哀求分发到相应的处置处罚器(即 Controller),并在哀求处置处罚完毕后将响应返回给用户。
设置 DispatcherServlet 非常简单,只需在 web.xml 文件中进行设置:
  1. <servlet>
  2.     <servlet-name>dispatcher</servlet-name>
  3.     <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
  4.     <load-on-startup>1</load-on-startup>
  5. </servlet>
  6. <servlet-mapping>
  7.     <servlet-name>dispatcher</servlet-name>
  8.     <url-pattern>/</url-pattern>
  9. </servlet-mapping>
复制代码
在 Spring Boot 中,可以通过 @SpringBootApplication 注解自动设置 DispatcherServlet,无需手动设置 web.xml。
HandlerMapping

HandlerMapping 是 Spring MVC 中用于将哀求 URL 映射到具体处置处罚器的接口。它决定了哪一个 Controller 负责处置处罚某个特定的哀求。
Spring 提供了多种 HandlerMapping 实现,常用的有:


  • BeanNameUrlHandlerMapping:通过 bean 的名称进行 URL 映射。
  • SimpleUrlHandlerMapping:通过显式设置的 URL 映射。
在当代 Spring MVC 开发中,通常使用 @RequestMapping 注解来进行 URL 映射,这种方式使用的是 RequestMappingHandlerMapping。
  1. import org.springframework.web.bind.annotation.RequestMapping;
  2. import org.springframework.web.bind.annotation.RestController;
  3. @RestController
  4. public class HomeController {
  5.     @RequestMapping("/home")
  6.     public String home() {
  7.         return "Welcome to Home Page!";
  8.     }
  9. }
复制代码
Controller

Controller 是处置处罚用户哀求的焦点组件。它继承哀求,调用业务逻辑,并返回视图名称和模子数据。在 Spring MVC 中,Controller 通常用 @Controller 或 @RestController 注解标注。
  1. import org.springframework.stereotype.Controller;
  2. import org.springframework.ui.Model;
  3. import org.springframework.web.bind.annotation.GetMapping;
  4. @Controller
  5. public class UserController {
  6.     @GetMapping("/user")
  7.     public String getUser(Model model) {
  8.         model.addAttribute("name", "John Doe");
  9.         return "user";
  10.     }
  11. }
复制代码
在这个例子中,getUser 方法处置处罚 /user 哀求,返回 user 视图,并将模子数据添加到视图中。
ViewResolver

ViewResolver 是用于将逻辑视图名称解析为具体视图实现的接口。它将控制器返回的视图名称转换为实际的视图对象,如 JSP、Thymeleaf 等。
Spring 提供了多种 ViewResolver 实现,常用的有:


  • InternalResourceViewResolver:将视图名称解析为 JSP 文件。
  • ThymeleafViewResolver:将视图名称解析为 Thymeleaf 模板。
  1. import org.springframework.context.annotation.Bean;
  2. import org.springframework.context.annotation.Configuration;
  3. import org.springframework.web.servlet.ViewResolver;
  4. import org.springframework.web.servlet.view.InternalResourceViewResolver;
  5. @Configuration
  6. public class WebConfig {
  7.     @Bean
  8.     public ViewResolver viewResolver() {
  9.         InternalResourceViewResolver resolver = new InternalResourceViewResolver();
  10.         resolver.setPrefix("/WEB-INF/views/");
  11.         resolver.setSuffix(".jsp");
  12.         return resolver;
  13.     }
  14. }
复制代码
在这个设置中,InternalResourceViewResolver 将视图名称解析为位于 /WEB-INF/views/ 目录下、以 .jsp 为后缀的 JSP 文件。
总结

Spring MVC 提供了一个灵活且强大的框架,用于构建 Web 应用步伐。通过 DispatcherServlet、HandlerMapping、Controller 和 ViewResolver 等组件,开发者可以轻松地处置处罚用户哀求、执行业务逻辑,并返回得当的视图。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

金歌

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表