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

news2024/11/26 0:31:02

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

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

在这里插入图片描述

目录

  • 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三个基本部分的理解.

在这里插入图片描述

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.

在这里插入图片描述

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没啥区别.

在这里插入图片描述

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 "你好,叶良辰";
    }
}

在这里插入图片描述

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

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

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

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

在这里插入图片描述

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

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请求,观察一下.

在这里插入图片描述

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.

在这里插入图片描述
我们在访问页面进行传参就会打印我们传参的内容.

在这里插入图片描述

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+"<br>"+"name : "+name;
    }
}
  1. 在我们不传任何参数的时候,仍然会打印null.

在这里插入图片描述
2. 我们传递一个参数的时候,另一个会打印null.

在这里插入图片描述

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

在这里插入图片描述

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

4. 热部署

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

在这里插入图片描述

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

在这里插入图片描述
在这里插入图片描述

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

在这里插入图片描述

在这里插入图片描述

  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 id,String name){
        return "id : "+id+"<br>"+"name : "+name;
    }
}

在这里插入图片描述

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

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;
    }
}

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

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/627641.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

希望之星、黄昏之星、三只乌鸦……怎么用 DolphinDB 快速计算 K 线?

K 线技术分析是股票投资中很常用的一种分析方法&#xff0c;主要通过历史价格图表中的数据来预测未来市场趋势。一根 K 线包括四个价格&#xff1a;开盘价、收盘价、最高价和最低价&#xff0c;通常简称为 OHLC。K 线按照周期一般可以分为日、周、月、年&#xff0c;以及五分钟…

Selenium自动化落地实践

01、自动化测试流程图 02、主要过程描述 1、自动化测试的切入点 开展自动化测试的时间点很关键&#xff0c;需要在系统已经过多版本的系统测试&#xff0c;达到稳定之后。 2、可行性分析 在进行项目自动化测试之前&#xff0c;第一步就是要确认其可行性&#xff0c;是否可以…

为何唐宋诗词鼎盛,而到了明清变成了小说

我国是一个历史悠久的国家&#xff0c;在漫长的历史长河中&#xff0c;随着朝代的更替&#xff0c;很多事也发生了有趣的变化。 例如唐宋时期盛行的是诗词&#xff0c;而到了明清时代&#xff0c;小说又开始盛行了起来&#xff0c;那么造成这种文风改变的原因是什么呢&#xf…

2023安博会进行时!英码科技1个重磅+4大看点隆重亮相

2023年6月7日&#xff0c;第十六届&#xff08;2023&#xff09;中国国际社会公共安全产品博览会&#xff08;以下简称&#xff1a;安博会&#xff09;在北京首钢会展中心盛大开幕&#xff01;本届安博会以“自主创新数智融合”为主题&#xff0c;共设置了7大主题展馆&#xff…

linux开发:Linux下查看端口占用

前段时间有学生问到&#xff0c;怎么查看已经被占用的端口&#xff1f;下面我就统一给大家解释一下。 提到端口&#xff0c;那首先来回顾端口定义&#xff0c;为了区分一台主机接收到的数据包应该转交给哪个任务来进行处理&#xff0c;使用端口号来区别&#xff1b;我们知道TCP…

【活动预告】ACDU 中国行 · 深圳站精彩抢先看

近期活动 在当今数字化时代&#xff0c;数据库是各行各业中最核心的信息管理系统之一。 随着技术的飞速发展&#xff0c;数据库领域也不断涌现出新的前沿技术和创新应用。 数据库运维和开发人员需要紧跟前沿技术&#xff0c;才能保持竞争力&#xff0c;并实现更高效、更智…

Java-API简析_java.lang.Float类(基于 Latest JDK)(浅析源码)

【版权声明】未经博主同意&#xff0c;谢绝转载&#xff01;&#xff08;请尊重原创&#xff0c;博主保留追究权&#xff09; https://blog.csdn.net/m0_69908381/article/details/131129886 出自【进步*于辰的博客】 其实我的【Java-API】专栏内的博文对大家来说意义是不大的。…

JMeter测试笔记(五):JDBC请求

引言&#xff1a; 进行性能测试时&#xff0c;我们有时需要模拟数据库的访问和操作&#xff0c;而JMeter中的JDBC请求可以帮助我们实现这个目的。 在本文中&#xff0c;我们将深入了解JDBC请求的使用方式&#xff0c;并学习如何正确配置它们来模拟对数据库的访问和操作。 如…

Excel函数VLOOKUP常用方法

一、基础用法 1、精确匹配 公式&#xff1a;VLOOKUP(待匹配值&#xff0c;查找范围&#xff0c;范围列数&#xff0c;查找方式) 定义好要输出表的表头和第一列&#xff0c;第一列即为要查找和匹配的父内容&#xff0c;在第二列输入公式&#xff0c;被查找表中一定也要将待查…

【大数据学习番外篇之爬虫2】爬虫入门简单例子

目录 1. 图片爬取 2. 破解百度翻译 3. 豆瓣电影爬取 4. 肯德基餐厅位置爬取 1. 图片爬取 通过以下代码我们可以看到图片已经爬取进入虚拟机里面。 # -*- coding: utf-8 -*- import re import requests from urllib import error from bs4 import BeautifulSoup import os…

Fmoc固相肽:116783-35-8,Fmoc-Thr(Ac3GalNAcα)-OH,进行总结说明

试剂基团反应特点&#xff08;Reagent group reaction characteristics&#xff09;&#xff1a; Fmoc-Thr(Ac3GalNAcα)-OH&#xff0c;该构建块中的O-糖苷键和O-乙酰基保护对哌啶和TFA[1]都是稳定的&#xff0c;使其与Fmoc固相肽合成中的标准方案完全兼容。乙酰基保护基的去除…

了解set

了解set 1. set的介绍2. set的使用1. Member functions2.set的迭代器3. set的容量4.set修改操作4.1 insert4.2 erase、swap和clear4.3 emplace 5. observers(了解)6.Operations(了解) 3.set有关的题目 1. set的介绍 C中的set是一种关联式容器&#xff0c;它能够存储同一数据类型…

Airtest自动化测试工具实战演练

一开始知道Airtest大概是在年初的时候&#xff0c;当时&#xff0c;看了一下官方的文档&#xff0c;大概是类似Sikuli的一个工具&#xff0c;主要用来做游戏自动化的&#xff0c;通过截图的方式用来解决游戏自动化测试的难题。最近&#xff0c;移动端测试的同事尝试用它的poco库…

融合空间与视觉,揭示信息之美——GIS与可视化的奇妙结合

近年来&#xff0c;随着信息技术的快速发展&#xff0c;地理信息系统&#xff08;GIS&#xff09;和可视化技术在各行各业中的应用越来越广泛。作为一种集成空间数据管理、分析和可视化展示的强大工具&#xff0c;GIS为我们带来了全新的视角和洞察力&#xff0c;它以其直观、生…

学习笔记:吴恩达ChatGPT提示工程

以下为个人笔记&#xff0c;原课程网址Short Courses | Learn Generative AI from DeepLearning.AI 01 Introduction 1.1 基础LLM 输入 从前有一只独角兽&#xff0c;输出 它和其他独角兽朋友一起住在森林里输入 法国的首都在哪&#xff1f;输出 法国的首都在哪&#xf…

arm32位应用兼容arm64位记录

目录 背景 兼容64位步骤 1.配置ndk支持arm64 2.进行build构建 3.构建完之后&#xff0c;进行apk包的分析 4.比较lib/armeabi-v7a和lib/arm64-v8a两个文件夹下的so库文件 5.确定缺少的so库文件属于哪些三方依赖 6.确定完所属依赖后&#xff0c;要么升级依赖、要么直接引入…

普通Java工程师如何成长为一名优秀的架构师?

导言 什么是架构师&#xff1f;对于程序员来说&#xff0c;聊架构是一个永不过时的话题。实际上&#xff0c;每一家公司都有自己对架构师不同的定位&#xff0c;因为不同的公司&#xff0c;所处的阶段、业务模式以及应用场景都不一样&#xff0c;因此对架构师的要求不一样&…

R -- loess函数

文章目录 brief:Example代码实例用在时序数据上 brief: 通常我们使用最小二乘回归&#xff08;OLS&#xff09;去找到一条直线来最佳地拟合数据点&#xff0c;就像下面那样。 但是我们会遇到下面这种数据分布,我们应该怎样处理呢&#xff1f;广义线性回归 或者 Loess回归进行…

图论 (Java) 从入门到入土 /第一部分 图的基础-图的表示/

零.前言 图&#xff0c;是一种比较复杂的数据结构。和树的一个节点只和上层一个节点相连不同&#xff0c;在图中&#xff0c;任意两个节点都可能相连&#xff0c;且可能具有方向性&#xff0c;并且节点的边具有权重&#xff0c;因此&#xff0c;图被用于描述各种复杂的数据对象…

深入理解Qt定时器:QTimer的魅力与挑战

深入理解Qt定时器&#xff1a;QTimer的魅力与挑战 1. 引言&#xff08;Introduction&#xff09; QTimer的基本概念&#xff08;Basic Concepts of QTimer&#xff09; 2. QTimer的基本使用&#xff08;Basic Usage of QTimer&#xff09;2.1 创建和启动QTimer&#xff08;Crea…