【Spring MVC】没有Spring MVC,Spring Boot表现得毫无用处? ? ?走进Spring MVC,学习热部署自动运行程序 ! ! !

前言:
大家好,我是良辰丫,从今天开始,我们就要进入Spring MVC的学习了,前面的文章中我们的很多注解都没有讲解,是不是看的脑瓜嗡嗡的,哈哈,没关系,在我们Spring MVC中我们就要详细讲解那些注解了,请跟随良辰的脚步,gogogo! ! !

个人主页:良辰针不戳
所属专栏:javaEE进阶篇之框架学习
励志语句:生活也许会让我们遍体鳞伤,但最终这些伤口会成为我们一辈子的财富。
期待大家三连,关注,点赞,收藏。
作者能力有限,可能也会出错,欢迎大家指正。
愿与君为伴,共探Java汪洋大海。

【Spring MVC】没有Spring MVC,Spring Boot表现得毫无用处? ? ?走进Spring MVC,学习热部署自动运行程序 ! ! !_第1张图片

目录

  • 1. 初识Spring MVC
    • 1.1 MVC的介绍
    • 1.2 MVC 和 Spring MVC 的关系
  • 2. 进一步了解Spring MVC
    • 2.1 Spring MVC 的创建和连接
      • 2.1.1 创建Spring MVC项目
      • 2.1.2 使用Spring MVC
    • 2.2 关于@RequestMapping 是 post 还是 get 请求?
      • 2.2.1 GET请求的三种写法
      • 2.2.2 POST请求的两种写法
  • 3. 获取基本参数
    • 3.1 获取单个参数
    • 3.2 获取多个参数
  • 4. 热部署

1. 初识Spring MVC

官方的描述大致翻译为 : Spring Web MVC是基于Servlet API构建的原始 Web框架,它从一开始就包含在Spring框架中, Spring Web MVC经常被称为 Spring MVC.

  • Spring MVC是基于Servlet构建的.
  • Spring MVC是一个Web框架.
  • Spring MVC来自于Spring webMVC模块.

看了上面,还是稀里糊涂的,什么鬼,Spring MVC是个啥,说了好像又没说.哈哈,没关系,我们慢慢往下看.

1.1 MVC的介绍

学习Spring MVC,我们首先要了解MVC.

  • MVC是Model View Controller的缩写,是软件工程的一种软件架构模式.
  • MVC把软件系统分为模型,视图和控制器三个基本部分.
  • Model(模型)是应⽤程序中⽤于处理应⽤程序数据逻辑的部分。通常模型对象负责在数据库中存取数据。.
  • View(视图)是应⽤程序中处理数据显示的部分。通常视图是依据模型数据创建的.
  • Controller(控制器)是应⽤程序中处理⽤户交互的部分。通常控制器负责从视图读取数据,
    控制⽤户输⼊,并向模型发送数据。

概念比较难理解,那么我们可以通过图解加深我们对MVC三个基本部分的理解.

【Spring MVC】没有Spring MVC,Spring Boot表现得毫无用处? ? ?走进Spring MVC,学习热部署自动运行程序 ! ! !_第2张图片

1.2 MVC 和 Spring MVC 的关系

  • MVC 是⼀种思想,⽽ Spring MVC 是对 MVC 思想的具体实现.
  • 总结来说,Spring MVC 是⼀个实现了 MVC 模式,并继承了 Servlet API 的 Web 框架。既然是 Web框架,那么当⽤户在浏览器中输⼊了 url 之后,我们的Spring MVC项目就可以感知到用户的请求.

2. 进一步了解Spring MVC

1. 在Spring Boot中为什么要学习Spring MVC?

  • 现在绝⼤部分的 Java 项⽬都是基于 Spring(或 Spring Boot)的,⽽ Spring 的核⼼就是 Spring MVC。
  • Spring MVC 是 Spring 框架的核⼼模块,⽽ Spring Boot 是 Spring框架 的核心,因此我们可以说Spring MVC是Spring框架的灵魂,所以我们需要去学习Spring MVC.
  • 在我们创建Spring Boot项目的时候,一定要选择Spring MVC, Spring MVC 是因为它是⼀切项⽬的基础,要不然绝大多数功能不能用,也就是Spring Boot失去了灵魂,Spring Web就是Spring MVC.

【Spring MVC】没有Spring MVC,Spring Boot表现得毫无用处? ? ?走进Spring MVC,学习热部署自动运行程序 ! ! !_第3张图片

2. Spring MVC学习哪些内容?

  • 连接的功能:将⽤户(浏览器)和 Java 程序连接起来,也就是访问⼀个地址能够调⽤到我们的
    Spring 程序.
  • 获取参数的功能:⽤户访问的时候会带⼀些参数,在程序中要想办法获取到参数.
  • 输出数据的功能:执⾏了业务逻辑之后,要把程序执⾏的结果返回给⽤户.

2.1 Spring MVC 的创建和连接

  • Spring MVC 项⽬创建和 Spring Boot 创建项⽬相同(Spring MVC 使⽤ Spring Boot 的⽅式创建),在创建的时候选择 Spring Web 就相当于创建了 Spring MVC 的项⽬。
  • 在 Spring MVC 中使⽤ @RequestMapping 来实现 URL 路由映射,也就是浏览器连接程序的作⽤。
  • 然后要进行地址访问:http://localhost:8080/user/hi,能打印“你好,叶良辰”的信息。

2.1.1 创建Spring MVC项目

我们目前常用的Spring MVC 是基于 Spring Boot 创建,也就是创建⼀个 Spring Boot 项⽬,勾选上 Spring Web模块,其余的和创建Spring Boot没啥区别.

【Spring MVC】没有Spring MVC,Spring Boot表现得毫无用处? ? ?走进Spring MVC,学习热部署自动运行程序 ! ! !_第4张图片

2.1.2 使用Spring MVC

package com.example.demo;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

@Controller//加载当前类
@RequestMapping("/user")//路由注册
@ResponseBody//告诉程序返回的是一个数据,不是页面
public class User {
    @RequestMapping("/hello")
    public String say(){
        return "你好,叶良辰";
    }
}

【Spring MVC】没有Spring MVC,Spring Boot表现得毫无用处? ? ?走进Spring MVC,学习热部署自动运行程序 ! ! !_第5张图片

在我们之前就已经接触过这些注解,但是我们当时根本不知道这些注解表示什么,稀里糊涂的用,哎呀,真的是饱受折磨,只能用,咱也不敢问.哈哈,苦尽甘来了,今天呢,我就与大家一起去了解我们注解的深意.

  • Controller注解我们已经在Spring中接触过,当时我们介绍了类的五大注解,表示把对象存储在Spring容器中,其实这里也可以这样理解;我们可以简单理解为加载类,没有该注解就无法正常使用.
  • 那么Controller可以换成五大注解中其它的注解嘛?换成其它的运行没有问题,可以正常进行访问,但是我们的每个注解表示不同的含义,Controller注解表示应用程序与用户进行交互,希望大家可以明白这一点.
  • @RequestMapping表示路由注册,什么是路由注册呢?其实就是指明一个地址,我们的Spring MVC是以方法作为最小单位的,所以只有一个类的路由地址还不行,还需要给方法搞一个路由地址.
  • @ResponseBody这个注解告诉程序返回的是一个数据,不是页面.
  • @RestController等于@ResponseBody加上@Controller.
  • 我们在刚开始学习Speing MVC,一定要记住这三个注解在类上同时使用,同时出现,在方法上我们暂时值需要一个路由注册的注解即可.

2.2 关于@RequestMapping 是 post 还是 get 请求?

我们使用我们的抓包工具fiddler进行抓包,我们会发现RequestMapping默认情况下是get请求.

【Spring MVC】没有Spring MVC,Spring Boot表现得毫无用处? ? ?走进Spring MVC,学习热部署自动运行程序 ! ! !_第6张图片

当然,我们也可以指定我们需要哪种请求.

package com.example.demo;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;

@Controller
@RequestMapping("/user")
@ResponseBody
public class User {
    @RequestMapping(value = "/hello",method = RequestMethod.POST)
    public String say(){
        return "你好,叶良辰";
    }
}

接下来,我们通过postman构造一个post请求,观察一下.

【Spring MVC】没有Spring MVC,Spring Boot表现得毫无用处? ? ?走进Spring MVC,学习热部署自动运行程序 ! ! !_第7张图片

2.2.1 GET请求的三种写法

不用死记硬背这些,我们记住常用的,剩下的需要的查资料即可.

// 写法1
@RequestMapping("/index")
// 写法2
@RequestMapping(value = "/index",method = RequestMethod.GET)
// 写法3
@GetMapping("/index")

2.2.2 POST请求的两种写法

// 写法1
@RequestMapping(value = "/index",method = RequestMethod.POST)
// 写法2
@PostMapping("/index")

3. 获取基本参数

3.1 获取单个参数

package com.example.demo;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping("/user2")
public class User2 {
    @RequestMapping("hello")
    public String say(String name){
        return "你好 , "+name;
    }
}

我们在进行访问页面不进行传参的时候会打印null.

【Spring MVC】没有Spring MVC,Spring Boot表现得毫无用处? ? ?走进Spring MVC,学习热部署自动运行程序 ! ! !_第8张图片
我们在访问页面进行传参就会打印我们传参的内容.

【Spring MVC】没有Spring MVC,Spring Boot表现得毫无用处? ? ?走进Spring MVC,学习热部署自动运行程序 ! ! !_第9张图片

3.2 获取多个参数

package com.example.demo;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping("/user2")
public class User2 {
    @RequestMapping("hello")
    public String say(String id,String name){
        return "id : "+id+"
"
+"name : "+name; } }
  1. 在我们不传任何参数的时候,仍然会打印null.

【Spring MVC】没有Spring MVC,Spring Boot表现得毫无用处? ? ?走进Spring MVC,学习热部署自动运行程序 ! ! !_第10张图片
2. 我们传递一个参数的时候,另一个会打印null.

【Spring MVC】没有Spring MVC,Spring Boot表现得毫无用处? ? ?走进Spring MVC,学习热部署自动运行程序 ! ! !_第11张图片

  1. 传递两个参数的时候,都会打印传递参数的值.

【Spring MVC】没有Spring MVC,Spring Boot表现得毫无用处? ? ?走进Spring MVC,学习热部署自动运行程序 ! ! !_第12张图片

  • 学到这里,想必大家对Spring MVC有了一定的认识了,这篇文章的主要作用是带领大家基本了解Spring MVC.
  • 接下来,我将协同大家一起去了解热部署,这将帮助我们更好的运行Spring MVC程序,什么是热部署呢?我们往下看.

4. 热部署

  • 热部署是指在你修改项目BUG的时候对JSP或JAVA类进行了修改在不重启WEB服务器前提下能让修改生效。但是对配置文件的修改除外!
  • 了解了热部署的基本概念,就来对热部署进行一定的配置.
  1. 引入框架支持(依赖)

【Spring MVC】没有Spring MVC,Spring Boot表现得毫无用处? ? ?走进Spring MVC,学习热部署自动运行程序 ! ! !_第13张图片

		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-devtools</artifactId>
			<scope>runtime</scope>
		</dependency>
  1. 通过settings设置项目的自定编译功能.

【Spring MVC】没有Spring MVC,Spring Boot表现得毫无用处? ? ?走进Spring MVC,学习热部署自动运行程序 ! ! !_第14张图片
【Spring MVC】没有Spring MVC,Spring Boot表现得毫无用处? ? ?走进Spring MVC,学习热部署自动运行程序 ! ! !_第15张图片

此时我们的当前项目进行了设置,但是当我们新创建一个项目的时候还需要进行配置,那么我们还需要进行一个配置,在以后的项目中就不需要进行配置了.

【Spring MVC】没有Spring MVC,Spring Boot表现得毫无用处? ? ?走进Spring MVC,学习热部署自动运行程序 ! ! !_第16张图片

【Spring MVC】没有Spring MVC,Spring Boot表现得毫无用处? ? ?走进Spring MVC,学习热部署自动运行程序 ! ! !_第17张图片

  1. 开启热部署.

【Spring MVC】没有Spring MVC,Spring Boot表现得毫无用处? ? ?走进Spring MVC,学习热部署自动运行程序 ! ! !_第18张图片

  • 这样之后,我们的热部署就生效了,不用我们自己重启服务器,热部署操作会帮我们重启服务器,是不是很方便呢?
  • 接下来我们就来验证以下热部署.

我们刚开始的写法 :

package com.example.demo;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping("/user2")
public class User2 {
    @RequestMapping("hello")
    public String say(String id,String name){
        return "id : "+id+"
"
+"name : "+name; } }

【Spring MVC】没有Spring MVC,Spring Boot表现得毫无用处? ? ?走进Spring MVC,学习热部署自动运行程序 ! ! !_第19张图片

修改之后的代码,我们修改代码后,不需要进行手动重启,热部署会帮我们完成.

package com.example.demo;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping("/user2")
public class User2 {
    @RequestMapping("hello")
    public String say(String id,String name){
        return "id : "+id+" | "+"name : "+name;
    }
}

修改之后访问页面如下,可见我们的热部署配置成功了.

【Spring MVC】没有Spring MVC,Spring Boot表现得毫无用处? ? ?走进Spring MVC,学习热部署自动运行程序 ! ! !_第20张图片

你可能感兴趣的:(spring,mvc,spring,boot)