🔥个人主页: 中草药
🔥专栏:【Java】登神长阶 史诗般的Java成神之路
😀一、简介
Spring MVC 是基于Servlet API构建的原始的Web框架,是 Spring 框架的一个重要模块,它实现了模型 – 视图 – 控制器(MVC)设计模式,用于构建灵活、可维护的 Web 应用程序。
MVC 设计模式将应用程序分为三个主要部分:
- 模型(Model):负责处理业务逻辑和数据存储。它包含了应用程序的数据和业务规则,可以是 Java 对象、数据库实体等。
- 视图(View):负责呈现用户界面。它可以是 HTML 页面、JSP 文件、XML 视图等,用于将模型中的数据展示给用户。
- 控制器(Controller):负责处理用户请求并协调模型和视图之间的交互。它接收用户的输入,调用模型进行业务处理,并选择合适的视图来呈现结果。
Spring MVC 通过将这些部分解耦,使得开发人员可以更加专注于各自的领域,提高了开发效率和代码的可维护性。
什么是Servlet呢?Servlet 是一种实现动态页面的技术. 准确来讲Servlet是一套 Java Web 开发的规范,或者说是一套 Java Web 开发的技术标准。只有规范并不能做任何事情,必须要有人去实现它. 所谓实现 Servlet 规范,就是真正编写代码去实现 Servlet 规范提到的各种功能,包括类、方法、属性等.Servlet 规范是开放的,除了 Sun 公司,其它公司也可以实现 Servlet 规范,目前常见的实现了 Servlet 规范的产品包括 Tomcat、Weblogic、Jetty、Jboss、WebSphere 等,它们都被称 为”Servlet 容器”. Servlet 容器用来管理程序员编写的 Servlet 类.
😄二、工作原理
- 客户端发送请求:用户通过浏览器发送 HTTP 请求到服务器。
- DispatcherServlet 接收请求:Spring MVC 的核心组件 DispatcherServlet 接收请求,并根据请求的 URL 找到对应的控制器(Controller)。
- 控制器处理请求:控制器接收请求后,调用相应的业务逻辑处理方法,对请求进行处理。控制器可以访问模型(Model)来获取数据,并将数据传递给视图(View)进行呈现。
- 选择视图:控制器根据处理结果选择合适的视图,并将模型数据传递给视图。
- 视图呈现结果:视图使用模型数据生成响应内容,并将其返回给 DispatcherServlet。
- DispatcherServlet 返回响应:DispatcherServlet 将视图生成的响应内容返回给客户端浏览器。
🤣三、核心组件
MVC 是 Model,View,Controller 的缩写,他是软件工程的一种软件架构设计模式,把软件系统分为模型,视图,控制器三个基本部分:
- Controller:控制器负责处理用户请求,调用业务逻辑处理方法,并选择合适的视图来呈现结果。可以理解为一个分发器,用来决定对于视图发来的请求,需要用哪一个模型来处理,以及处理完后需要跳回哪一个视图,即用来连接 Model 和 View
- Model:是应用程序的主体部分,用来处理程序中的数据逻辑部分
- View:应用程序当中专门用来与浏览器进行交互,展示数据的资源
此外还有一些组件如下:
- DispatcherServlet:Spring MVC 的核心 servlet,负责接收用户请求并将其转发给相应的控制器进行处理。它还负责选择合适的视图来呈现响应结果。
- HandlerMapping:用于将请求 URL 映射到相应的控制器。Spring MVC 提供了多种实现方式,如基于注解的映射和基于 XML 配置的映射。
- ModelAndView:用于封装模型数据和视图信息。控制器可以返回一个 ModelAndView 对象,其中包含了要呈现的视图名称和模型数据。
- ViewResolver:用于将视图名称解析为实际的视图对象。Spring MVC 提供了多种视图解析器,如 JSP 视图解析器、FreeMarker 视图解析器等。
🙂四、注解配置
创建 Spring MVC项目
Spring MVC 提供了丰富的注解来简化开发过程。
1.@RestController
@RestController
是一个组合注解,它相当于@Controller
和@ResponseBody
的结合。
-
作用:用于标识一个控制器类,表明该类中的方法将返回数据而不是视图。当一个方法被注解为
@RestController
的类中的方法被调用时,Spring 会将方法的返回值直接序列化为 JSON、XML 或其他适当的格式,并将其作为 HTTP 响应体返回给客户端。 -
示例:
@RestController
public class MyController {
// 方法定义...
}
2.@RequestMapping
@RequestMapping
用于映射请求的 URL 到特定的处理方法上。
-
作用:可以在类级别和方法级别上使用。在类级别上使用时,它定义了一个基本的请求路径前缀,而在方法级别上使用时,它进一步细化了请求的路径和 HTTP 方法等。
-
属性:
-
value
:指定请求的 URL 路径。 -
method
:指定请求的 HTTP 方法,如GET
、POST
、PUT
、DELETE
等。 -
consumes
:指定请求的内容类型。 -
produces
:指定响应的内容类型。
-
-
示例:
@RestController
@RequestMapping("/api")
public class MyController {
@RequestMapping(value = "/users", method = RequestMethod.GET)
public List getUsers() {
// 返回用户列表
}
}
3.@RequestParam
@RequestParam
用于获取请求参数。
-
作用:可以从 URL 的查询参数或者表单数据中获取参数值,并将其传递给方法参数。
-
属性:
-
value
:指定参数的名称。 -
required
:表示该参数是否必填,默认为true
。
-
-
示例:
@RestController
@RequestMapping("/api")
public class MyController {
@GetMapping("/search")
public List searchUsers(@RequestParam("keyword") String keyword) {
// 根据关键字搜索用户
}
}
4.@PathVariable
@PathVariable
用于获取 URL 中的路径变量。
-
作用:当请求的 URL 中包含动态的部分时,可以使用
@PathVariable
注解将其提取出来作为方法参数。 -
示例:
@RestController
@RequestMapping("/api/users")
public class MyController {
@GetMapping("/{id}")
public User getUserById(@PathVariable("id") Long id) {
// 根据用户 ID 返回用户对象
}
}
在上述例子中,当客户端发送请求/api/users/123
时,id
参数将被赋值为123
。
😉五、优势
- 松耦合:Spring MVC 实现了模型、视图和控制器的分离,使得各个部分之间的耦合度降低,提高了代码的可维护性和可扩展性。
- 灵活性:Spring MVC 提供了丰富的配置选项和扩展点,可以根据不同的需求进行定制和扩展。
- 易于测试:由于 Spring MVC 的各个部分之间解耦,使得单元测试和集成测试更加容易。
- 强大的视图技术支持:Spring MVC 支持多种视图技术,如 JSP、FreeMarker、Thymeleaf 等,可以根据项目需求选择合适的视图技术。
- 良好的社区支持:Spring MVC 是 Spring 框架的一部分,拥有庞大的社区和丰富的文档资源,遇到问题可以很容易地找到解决方案。
😊六、JSON
JSON (JavaScript Object Notation) 是一种轻量级的数据交换格式。它基于一个子集的 JavaScript 编程语言,是易于人阅读和编写同时也易于机器解析和生成的数据格式。JSON 格式广泛用于 Web 应用程序之间传输数据,并且得到了几乎所有编程环境的支持。
1.基本语法
- JSON 数据以键值对的形式表示。
- 键必须是字符串,而值可以是合法的 JSON 数据类型(字符串、数字、对象、数组、布尔值或 null)。
- JSON 对象使用花括号 {} 来定义。
- JSON 数组使用方括号 [] 来定义。
- 成员之间用逗号分隔。
- 字符串必须使用双引号包围。
2.特点
- 简洁性:JSON 的语法非常简洁,易于阅读和编写。与 XML 相比,JSON 没有过多的标签和属性,减少了数据的冗余。
- 可读性:JSON 的文本格式可以很容易地理解和编辑数据。这对于调试和手动修改数据非常有帮助。
- 跨平台性:JSON 可以在不同的操作系统和编程语言中使用,因为它是一种基于文本的格式。大多数编程语言都提供了对 JSON 的支持,可以轻松地解析和生成 JSON 数据。
- 可扩展性:JSON 可以很容易地扩展,因为它可以包含任意复杂的对象和数组结构。可以根据需要添加新的键值对或数组元素,而不会影响现有的数据结构。
3.JSON 与 XML 的比较
- JSON 比 XML 更小、更快,更易解析。
- JSON 直接映射到数据结构,如数组和对象。
- XML 更适合于文档标记,提供了更多的元数据选项。
- JSON 不支持注释,XML 支持。
4.JSON 在实际中的应用
- API 数据交互:Web API 常返回 JSON 格式的数据。
- 存储配置信息:应用程序可以将配置保存为 JSON 文件。
- 客户端存储:例如,通过浏览器的 localStorage 或 sessionStorage 存储 JSON 数据。
5.使用
在postman中
在fiddle之中
6.参考资源
- JSON 官方网站
- MDN Web 文档关于 JSON
能用众力,则无敌于天下矣;能用众智,则无畏于圣人矣。——孙权
🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀
以上,就是本期的全部内容啦,若有错误疏忽希望各位大佬及时指出💐
制作不易,希望能对各位提供微小的帮助,可否留下你免费的赞呢🌸