Spring Web MVC 入门使用

时间:2024-03-16 07:29:49

1. 什么是Spring Web MVC

Spring Web MVC是基于Servlet API 构建的原始Web框架,从一开始就包含在Spring框架中。

Servlet 是一套Java Web 开发的规范,或者说是一套Java Web 开发的技术标准。只有规范并不能做任何事情,必须要有人去实现它,实现Servlet就是去实现Servlet规范提到的各种功能,包括类,方法,属性等。例如Tomcat就实现了Servlet,称为“Servlet”容器。

1.1 MVC含义

MVC是Model View Controller的缩写,它是软件工程中的一种软件架构设计模式,它把软件系统分为模型,视图和控制器三个基本部分。

  • View(视图):指在应用程序中专门用来与浏览器进行交互,展示数据的资源。
  • Model(模型):是应用程序的主体部分,用来处理程序中数据逻辑的部分。
  • Controller(控制器):可以理解为一个分发器,用来决定对于视图发来的请求,需要用哪一个模型来处理,以及处理完后需要跳回到哪一个视图,即用来连接视图和模型。

 

1.2 什么是Spring MVC

(Spring MVC就是Spring Web MVC)

MVC是一种架构设计模式,而Spring MVC是对MVC思想的具体实现。我们上期创建Spring Boot项目时勾选的 Spring Web 框架,其实就是Spring MVC 框架,也就是说我们上期创建的Spring Boot项目也可以说是Spring MVC项目。

Spring Boot 和SpringMVC的关系就相当于,Spring Boot是一个可以添加很多功能的框架,当然也可以添加 Spring MVC,所以是一个包含的关系。

Spring实现MVC时 ,也结合自身项目的特点,进行了一些改变:

2. 使用Spring MVC

我们学习Spring MVC,重点也就是学习如何通过浏览器和用户进行交互。

  1. 建立连接:将用户浏览器和Java程序连接起来,也就是访问一个能调用我们Spring程序的地址
  2. 请求:用户请求时会带有一些参数,在程序中要想办法获取参数,所以请求的处理主要是获取参数
  3. 响应:执行了业务逻辑后,要把程序执行的结果返回给用户,也就是响应。

 2.1 创建项目

和创建Spring Boot项目相同,在创建时 选择上Spring Web即可

2.2 建立连接

在Spring MVC中使用 @RequsetMapping 注解来建立服务器和客户端的连接,用来指定处理哪些HTTP请求以及对应的路径。

package com.example.j20240313springmvc;

import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class RequestController {
    @RequestMapping("/springMVC")
    public String say() {
        return "hello Spring MVC";
    }
}

@RequsetMapping 也可以修饰类

package com.example.j20240313springmvc;

import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RequestMapping("/request")
@RestController
public class RequestController {
    @RequestMapping("/springMVC")
    public String say() {
        return "hello Spring MVC";
    }
}

注意访问的url会发生变化:

可以在类中放多个@RequsetMapping 修饰的方法,注意路径不能相同

@RequestMapping("/request")
@RestController
public class RequestController {
    @RequestMapping("/say1")
    public String say1() {
        return "hello Spring MVC";
    }
    @RequestMapping("/say2")
    public String say2() {
        return "你好 Spring MVC";
    }
}

2.3 @RequestMapping支持GET请求还是POST请求

我们使用Fiddler抓包:

可以看到@RequsetMapping是支持get请求的。

浏览器发送的请求类型都是GET,我们可以在resources/static下写一个html文件使用post发送一个请求

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>post</title>
</head>
<body>
    <form action = "/request/say2" method = "post">
        <input type = "submit" value = "发送请求">
    </form>
</body>
</html>

注意访问时IP和端口号后直接跟文件名,即把static当作根目录。

点击发送

成功跳转到say2 ,Fiddler中也可以看到post请求

2.4 PostMan使用 

作为一个后端开发人员,测试代码还要写html文件显得过于麻烦,所以我们可以使用一些工具来发送请求。

PostMan下载链接:Download Postman | Get Started for Free

注册后登录: 

点击Create 创建,创建完成后,点击Add a request,创建一个请求

我们输入url点击发送:

 

下面这些内容代表传递的参数。

Params代表使用查询字符串传参......