Spring MVC-基础概念(定义+创建和连接+@RequestMappring的描述)

目录

1.什么是Spring MVC?

2. MVC 和 Spring MVC 的关系

3.Spring MVC 项目创建

4. @RequestMappring实现用户和程序的映射

4.1 @RequestMappring 注解解释

4.2 方法1: @RequestMapping(“/xxx”)

4.4 @RequestMapping(method = xxxx, value = “xxx”) 是POST/GET请求

4.5 方法2:@PostMapping(“/xxx”)

4.6 方法3:@GetMapping(“/xxx”)

4.7 经典面试题Get方法和Post方法的区别


1.什么是Spring MVC?

官方对于 Spring MVC 的解释是:

Spring Web MVC是基于Servlet API构建的原始Web框架,从一开始就包含在Spring框架中。的正式名称“Spring Web MVC”来自其源模块的名称(Spring-webmvc),但它通常被称为“SpringMVC”。

从上述解释我们可以知道Spring MVC两个基本信息:

  1. 构架在 Servlet (API) 之上的
  2. 是一个 Web框架(Http)
  3. 来自于 Spring webMVC 模块

这就意味着:

1.servlet那套写法再MVC中是适配的

2.意味着具备http能力,意味着可以拿它去做接口,做网站

2. MVC 和 Spring MVC 的关系

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

  1. Model(模型)是一个数据模型,适用于和数据库打交道的数据持久层,通过它可以访问所有的数据库
  2. View(视图)通常是用来展现信息的,给用户看的东西
  3. Controller(控制器)来处理用户交互的

MVC是一种思想,而 Spring MVC 是一个具体实现的框架

总的来说:Spring MVC 是一个实现了 MVC 模式,并继承了 Servlet API 的框架

 

3.Spring MVC 项目创建

现在主流的创建方式为:使用 Spring Boot 添加 Spring Web 模块 = Spring MVC

4. @RequestMappring实现用户和程序的映射

4.1 @RequestMappring 注解解释

@RequestMapping 是 Spring Web应用程序中最常被用到的注解之一,它是用来注册接口的路由映射的。


路由映射:所谓的路由映射指的是,当用户访问一个url时,将用户的请求对应到程序中某个类的某个方法的过程就叫路由映射。

4.2 方法1: @RequestMapping(“/xxx”)

@RequestMapping 可修饰类, 也可以修饰方法. 当修饰类和方法时, 访问的地址是 类 + 方法

接下来,创建⼀个 UserController 类,实现⽤户到 Spring 程序的互联互通,具体实现代码如下:

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
@Controller // 让 spring 框架启动时,加载
@ResponseBody // 返回⾮⻚⾯数据
@RequestMapping("/user") // 路由器规则注册
public class UserController {
    // 路由器规则注册
    @RequestMapping("/hi")
    public String sayHi(){
        return "<h1>Hi,Spring MVC.</h1>";
    }
}

这样实现之后,当访问地址:http://localhost:8080/user/hi 时就能打印“hello,spring mvc”的信息

 

4.4 @RequestMapping(method = xxxx, value = “xxx”) 是POST/GET请求

使用PostMan可以测试得到,默认情况下使用注解@RequestMapping是可以接收GET和POST 请求的

@RequestMapping(method = xxxx, value = “xxx”)是可以指定POST还是GET请求的

@Controller
@ResponseBody // 定义返回的数据格式为⾮⻚⾯
public class UserController {
    @RequestMapping(value = "/hi",method= RequestMethod.POST)
    public String sayHi(){
        return "<h1>Hi,Spring MVC.</h1>";
    }
}

4.5 方法2:@PostMapping(“/xxx”)

直接指定为POST请求

@Controller
@ResponseBody   // 作用: 表示的是返回一个非静态页面的数据
@RequestMapping("/user")  // 类上的 RequestMapping 可以省略
public class UserController {

    @PostMapping("/sayhi3")
    public String sayHi3() {
        return "Hello";
    }
}

4.6 方法3:@GetMapping(“/xxx”)

直接指定为GET请求

@Controller
@ResponseBody   // 作用: 表示的是返回一个非静态页面的数据
@RequestMapping("/user")  // 类上的 RequestMapping 可以省略
public class UserController {

    @GetMapping("/sayhi4")
    public String sayHi4() {
        return "Hello";
    }
}

4.7 经典面试题Get方法和Post方法的区别

这里给大家推荐一篇大佬写的:

面试突击71:GET 和 POST 有什么区别? - 掘金

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

协作实现时序数据高效流转链路 | 7.20 IoTDB X RocketMQ 技术沙龙线上直播回顾

7 月 20 日&#xff0c;IoTDB X RocketMQ 技术沙龙线上直播圆满结束。工业物联网时序数据库研发商天谋科技、云原生事件流平台 Apache RocketMQ 社区的四位技术专家&#xff0c;针对实时数据接入、多样数据处理与系统的高扩展、高可靠特性的数据流转处理平台实现难点&#xff0…

Java日志框架JUL、Log4j、logback、log4j2使用

随着软件系统的发展系统业务越来越多、逻辑越来越复杂、代码量越来越多&#xff0c;伴随着容易出现的bug也会越来越多&#xff0c;不论是开发测试阶段还是生产阶段都需要将这些错误及时的捕捉记录下来&#xff0c;方便解决这些问题&#xff0c;否则针对出现的异常无从下手&…

【三维点云处理】顶点、面片、邻接矩阵、邻接距离矩阵以及稀疏存储概念

文章目录 vts和faces基础知识vertices-节点&#xff08;3是点的三维坐标&#xff09;faces-面片&#xff08;3是构成三角形面片的3个点&#xff09; 邻接矩阵邻接距离矩阵&#xff08;NN500&#xff09;稀疏矩阵 vts和faces基础知识 vertices-节点&#xff08;3是点的三维坐标…

【JavaEE初阶】HTTP协议

文章目录 1. HTTP概述和fiddler的使用1.1 HTTP是什么1.2 抓包工具fiddler的使用1.2.1 注意事项1.2.2 fiddler的使用 2. HTTP协议格式2.1 HTTP请求格式2.1.1 基本格式2.1.2 认识URL2.1.3 方法 2.2 请求报头关键字段2.3 HTTP响应格式2.3.1 基本格式2.3.2状态码 1. HTTP概述和fidd…

【博客682】k8s apiserver bookmarks机制以更高效检测变更

k8s apiserver bookmarks机制以更高效检测变更 list-watch背景&#xff1a; List-Watch 是kubernetes中server和client通信的最核心的机制&#xff0c; 比如说api-server监听etcd&#xff0c; kubelet监听api-server&#xff0c; scheduler监听api-server等等&#xff0c;其实…

任务的创建与删除

Q: 什么是任务&#xff1f; A: 任务可以理解为进程/线程&#xff0c;创建一个任务&#xff0c;就会在内存开辟一个空间。 比如&#xff1a; 玩游戏&#xff0c;打篮球&#xff0c;开车&#xff0c;都可以视为任务。 Windows 系统中的 MarkText 、谷歌浏览器、记事本&#xff0…

SpringBoot2为什么默认使用CGLib不再使用JDK动态代理

SpringBoot2为什么默认使用CGLib不再使用JDK动态代理 CGLib和JDK动态代理对比1. 不需要实现接口2. 性能3. 代理对象的创建4. 调用方法 2. CGLib使用 CGLib和JDK动态代理对比 1. 不需要实现接口 JDK动态代理类要求目标类必须实现接口,而CGLib动态代理可以直接代理普通类(非接口…

C语言中指针(简略复习)

一、指针 1. 指针运算 设p为指针&#xff0c;T为类型&#xff0c;n为整型数字&#xff0c;则pn表示&#xff0c;指针从当前位置向后移动n个数据单位&#xff0c;而不是n个字节。 数据类型不同&#xff0c;移动的数据单位字节数也不同&#xff0c;实际上移动的字节数为n*sizeo…

【windows】连接共享打印机提示:0x0000011B

【问题现象】 添加共享打印机的时候&#xff0c; 提示错误&#xff1a;0x0000011B。 【解决方法】 按winr键&#xff0c;在运行输入regedit 然后在注册表中找到路径&#xff1a; 计算机\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Print 打开后&#xff0c;在右侧…

【Nodejs】Puppeteer\爬虫实践

puppeteer 文档:puppeteer.js中文文档|puppeteerjs中文网|puppeteer爬虫教程 Puppeteer本身依赖6.4以上的Node&#xff0c;但是为了异步超级好用的async/await&#xff0c;推荐使用7.6版本以上的Node。另外headless Chrome本身对服务器依赖的库的版本要求比较高&#xff0c;c…

[Angular] Import TranslateModule in Angular 16

1.Background Angular 更新至V16版后&#xff0c;支援 standalone&#xff0c;故移除了 NgModule&#xff0c;而TranslateModule 又要在AppModule中 import&#xff0c;那该如何做呢&#xff1f; 2.NPM packages installation npm install ngx-translate/core npm install n…

Pytorch个人学习记录总结 08

目录 神经网络-搭建小实战和Sequential的使用 版本1——未用Sequential 版本2——用Sequential 神经网络-搭建小实战和Sequential的使用 torch.nn.Sequential的官方文档地址&#xff0c;模块将按照它们在构造函数中传递的顺序添加。代码实现的是下图&#xff1a; 版本1—…

Vue入门项目——WebApi

Vue入门——WebApi vue3项目搭建组合式API响应式APIreactive()ref() 生命周期钩子computed计算属性函数watch监听函数父子通信模板引用组合选项 vue3项目搭建 简单看下Vue3的优势吧 下载安装npm及node.js16.0以上版本&#xff08;确保安装成功可用如下代码检查版本&#xff0…

【Docker-compose】基于Docker-compose创建LNMP环境并运行Wordpress网站平台

基于Docker compose创建LNMP环境并运行Wordpress网站平台 1.Docker-Compose概述2. YAML文件格式及编写注意事项3. Docker-Compose配置常用字段4.Docker Compose常用命令5.使用Docker-compose创建LNMP环境&#xff0c;并运行Wordpress网站平台5.1 Docker Compose环境安装5.2 使用…

使用spark进行hbase的bulkload

使用spark进行hbase的bulkload 一、 背景 HBase 是一个面向列&#xff0c;schemaless&#xff0c;高吞吐&#xff0c;高可靠可水平扩展的 NoSQL 数据库&#xff0c;用户可以通过 HBase client 提供的 put get 等 api 实现在数据的实时读写。在过去的几年里&#xff0c;HBase …

主机漏洞利用演示MS17-010(永恒之蓝)

ms17-010危害&#xff1a;对被攻击方的电脑造成蓝屏&#xff01; 申明&#xff1a;本篇文章的用意仅做学习使用 网络搭建环境&#xff1a; 软件&#xff1a;Vmware Workstation 17 攻击机&#xff1a;Kali 靶机环境&#xff1a;Windows 7 Nmap软件的基本功能&#xff1a; …

ONNX Runtime 加速深度学习(C++ 、python)详细介绍

ONNX Runtime 加速深度学习(C 、python)详细介绍 本文在 https://blog.csdn.net/u013250861/article/details/127829944 基础上进行了更改&#xff0c;感谢原作&#xff01; ONNXRuntime(Open Neural Network Exchange)是微软推出的一款针对ONNX模型格式的推理框架&#xff0c…

3DVR全景旅游,最新数字化智慧文旅

导语&#xff1a; 随着科技的飞速发展&#xff0c;3DVR全景旅游正以其独特的特点和无限的优势&#xff0c;成为当今智慧文旅的领航者。穿戴上VR设备&#xff0c;只需一个轻轻的点击&#xff0c;你将被带入一个全新的数字世界&#xff0c;领略美景、探索奇迹。让我们一起深入了…

第119天:免杀对抗-二开CSShellcode函数修改生成模版修改反编译重打包(下)

知识点 #知识点&#xff1a; 1、CS-表面特征消除 2、CS-HTTP流量特征消除 3、CS-Shellcode特征消除#章节点&#xff1a; 编译代码面-ShellCode-混淆 编译代码面-编辑执行器-编写 编译代码面-分离加载器-编写 程序文件面-特征码定位-修改 程序文件面-加壳花指令-资源 代码加载面…

SSM企业固定资产智能管理系统的设计与实现【纯干货分享,M免费领取源码06298】

摘要 信息化社会内需要与之针对性的信息获取途径&#xff0c;但是途径的扩展基本上为人们所努力的方向&#xff0c;由于站在的角度存在偏差&#xff0c;人们经常能够获得不同类型信息&#xff0c;这也是技术最为难以攻克的课题。针对企业固定资产智能管理系统等问题&#xff0c…