【Spring框架全系列】初识Spring MVC(上)

这篇具有很好参考价值的文章主要介绍了【Spring框架全系列】初识Spring MVC(上)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

🌃哈喽,大家好,我是小浪。接着上篇博客,我们学习了springboot配置日志文件,到此,那么springboot的内容也更新的差不多了,由于是初学阶段,所以不学习那么深入,那么我们学习框架都知道SSM,当前我们已经学习完毕springboot了,那么今天就来学习第二个S,Spring MVC;📬📬

📲目录

一、什么是SpringMVC?

二、为什么要学习Spring MVC?

三、我们需要学习的内容

一、连接的功能

二、获取参数;

 四、后端参数重命名

五、传递JSON对象


一、什么是SpringMVC?

📡1、构建在Servlet(API)之上的;

⏱️2、是一个web框架;

🧭3、来自于Spring web MVC模块;

🔦定义:MVC 是 Model View Controller 的缩写,它是软件⼯程中的⼀种软件架构模式,它把软件系统分为模型、视图和控制器三个基本部分;
如下图所示:
【Spring框架全系列】初识Spring MVC(上)

📻Model(模型)是应⽤程序中⽤于处理应⽤程序数据逻辑的部分。通常模型对象负责在数据库中存取数据。

📠View(视图)是应⽤程序中处理数据显示的部分。通常视图是依据模型数据创建的。

☎️Controller(控制器)是应⽤程序中处理⽤户交互的部分。通常控制器负责从视图读取数据,
控制⽤户输⼊,并向模型发送数据。
🕰总结:MVC 是⼀种思想,⽽ Spring MVC 是对 MVC 思想的具体实现。

二、为什么要学习Spring MVC?

🔭因为现在绝⼤部分的 Java 项⽬都是基于 Spring 或 Spring Boot的,⽽ Spring 的核⼼就是 Spring MVC。也就是说 Spring MVC 是 Spring 框架的核⼼模块,⽽ Spring Boot 是 Spring 的脚⼿架,因此我们可以推断出,现在市⾯上绝⼤部分的 Java 项⽬约等于 Spring MVC 项⽬,足以体现需要学习Spring MVC的必要;
这里需要注意:Spring MVC其实就是Spring web,还记得我们之前创建springboot项目的时候勾选的依赖了嘛;
【Spring框架全系列】初识Spring MVC(上)

三、我们需要学习的内容

一、连接的功能

1、首先还是我们先学习如何创建一个Spring MVC项目;

那么博主这里演示的是通过springboot项目添加spring web依赖,来创建一个Spring MVC项目,其实在之前咱们的SpringBoot项目已经演示过了,只不过前几篇博客写的是springboot的知识;

创建的方法可以参考这篇博客:如何创建一个SpringBoot项目。

只不过我们在创建新项目的时候勾选Spring web依赖即可,如上图所示;

2、选取一个合适的目录,来创建一个新的Spring NVC项目,完成之后界面如下:

【Spring框架全系列】初识Spring MVC(上)

3、删除多余的文件目录;

【Spring框架全系列】初识Spring MVC(上)

4、鼠标右键此项目,点击红色箭头指向,完成项目的初始化;

【Spring框架全系列】初识Spring MVC(上)

勾选maven,点击OK;

【Spring框架全系列】初识Spring MVC(上)

5、观察下面两个文件变成蓝色说明初始化完成;

【Spring框架全系列】初识Spring MVC(上)

6、在demo包下新建一个类TestController:

【Spring框架全系列】初识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;

@RequestMapping("/user")//url路由注册
@ResponseBody // 告诉程序要返回的是数据而不是页面
@Controller // 让框架启动的时候加载当前类,别人才能访问
public class TestController {

    @RequestMapping("/hi")
    public String sayHi(){
        return "hi,Spring MVC";
    }
}

7、运行启动类DemoApplication,然后在浏览器访问对应的url地址;

【Spring框架全系列】初识Spring MVC(上)

我们发现,可以正常访问,这里需要注意代码中的那几个注解,缺一不可,注意理解每个注解的作用,最好能达到记忆的效果;

这里说明一下,我们可以使用这个注解@RestController代替@ResponseBody 和 @Controller,能够达到一样的效果,非常的方便;

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

一、@RequestMapping 是 post 还是 get 请求?

1、首先@RequestMapping肯定是get请求,因为我们通过浏览器来访问,可以在浏览器页面查看网页源代码来观察到;F12查看网页源代码,点击all;

【Spring框架全系列】初识Spring MVC(上)

我们借助postman来验证 @RequestMapping是否为post方法;首先复制我们的url地址,放到postman里面,选择post请求,点击send;

【Spring框架全系列】初识Spring MVC(上)

由此得出结论@RequestMapping即支持get请求,又支持post请求;

我们可以显示的指定 @RequestMapping 支持的请求方法,如下所示,这两种写法的意思一样;
@RequestMapping(value = "/hi",method = RequestMethod.GET)
@GetMapping("/hi")

或者指定@RequestMapping 支持post请求方法;

    @PostMapping("/hi")
    @RequestMapping(value = "/hi",method = RequestMethod.POST)

当指定为post请求的时候,我们再次通过postman设置为get请求看能否访问到;

【Spring框架全系列】初识Spring MVC(上)

我们发现报错了,说明显示指定请求生效了;

二、获取参数;

1、我们可以在原先的函数sayH中提供一个参数name,用来举例;

【Spring框架全系列】初识Spring MVC(上)

2、运行启动类,在浏览器url地址里面输入:http://localhost:8080/user/hi?name=zhangsan

【Spring框架全系列】初识Spring MVC(上)

注意当有多个参数时,前后端进⾏参数匹配时,是以参数的名称进⾏匹配的,因此参数的位置是不影响后端获取参数的结果;

注意在Spring MVC中传递参数一一定要传包装类型,而不是基础类型;

在TestController下新建一个方法;

    @RequestMapping("/can")
    public String sayHi2(int id){
        return "id="+id;
    }

浏览器url中访问:

【Spring框架全系列】初识Spring MVC(上)

我们发现直接会报一个500回来,为什么呢?我们把传递参数的类型换成包装类试一下;

    @RequestMapping("/can")
    public String sayHi2(Integer id){
        return "id="+id;
    }

运行结果:

【Spring框架全系列】初识Spring MVC(上)

当需要一个基础类型,但又忘记传递的时候,使用基础类型会报错,使用包装类型不会,只是值为null;

如何进行热部署?

1、File -> settilngs ->找到红色箭头指向的框,勾选后面那个,点击OK;

【Spring框架全系列】初识Spring MVC(上)

2、开启热部署,点击搜索,输入registry,点击第一个;

【Spring框架全系列】初识Spring MVC(上)

3、老版本ide(2021之前)的走这一步,新版本不用;

【Spring框架全系列】初识Spring MVC(上)

idea2021之后的版本:

【Spring框架全系列】初识Spring MVC(上)

到这一步,springboot热部署就已经完成了;那么idea热部署的本质是重启spring boot项目,一般会有3s左右的延迟;

三、传递对象;

1、在demo包下新建一个类User;

【Spring框架全系列】初识Spring MVC(上)

User类代码:

package com.example.demo.controller;

import lombok.Data;

@Data
public class User {
    private int id;
    private String name;
    private int age;
}
TestController中新增方法ShowUser;
    @GetMapping("/show-user")
    public String ShowUser(User user){
        return user.toString();
    }

浏览器输入url地址,传递相应参数(前端实现)http://localhost:8080/user/show-user?id=1&name=zhangsan&age=20

【Spring框架全系列】初识Spring MVC(上)

 四、后端参数重命名

某些特殊的情况下,前端传递的参数 key 和我们后端接收的 key 可以不⼀致,⽐如前端传递了⼀个t 给后端,⽽后端⼜是以 starttime 字段来接收的,这样就会出现参数接收不到的情况,如果出现 这种情况,我们就可以使⽤ @RequestParam 来重命名前后端的参数值。
比如现在是原始的代码:
    @GetMapping("/show-time")
    public String showtime(String t1,String t2){
        return "开始时间"+t1 +" 结束时间"+t2;
    }

看起来非常的丑,那么我们可以使用@RequestParam 来重命名前后端的参数值:

    @GetMapping("/show-time")
    public String showtime(@RequestParam("t1") String starttime,@RequestParam("t2") 
            String endtime){
        return "开始时间"+starttime +" 结束时间"+endtime;
    }

浏览器输入url地址,同时传参数t1,t2;

http://localhost:8080/user/show-time?t1=2023.5.1&t2=2023.5.11

【Spring框架全系列】初识Spring MVC(上)

要注意,使用这个注解@RequestParam的时候,必须要传递参数,否则会报错;

【Spring框架全系列】初识Spring MVC(上)

当然我们可以通过设置 @RequestParam 中的 required=false 来避免不传递时报错;

    @GetMapping("/show-time")
    public String showtime(@RequestParam(value = "t1",required = false) String starttime,
                           @RequestParam(value = "t2",required = false) String endtime){
        return "开始时间"+starttime +"| 结束时间"+endtime;
    }

五、传递JSON对象

1、在postman里面设置以下操作;
【Spring框架全系列】初识Spring MVC(上)

2、TestController类下代码:

    @PostMapping("/show-json-user")
    public String showJson(@RequestBody User user){
        return user.toString();
    }

3、在postman中进行测试;http://localhost:8080/user/showJson

【Spring框架全系列】初识Spring MVC(上)

📬📬OK,那么今天的Spring MVC学习内容就到这里啦,下篇博客我们继续来肝Spring MVC剩下的内容,感谢阅读,点个订阅,以便于及时收到更新的信息哈!📝💡💡文章来源地址https://www.toymoban.com/news/detail-470236.html

到了这里,关于【Spring框架全系列】初识Spring MVC(上)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【Spring框架全系列】如何创建一个SpringBoot项目

    🌇哈喽,大家好,我是小浪。前几篇博客我们已经介绍了什么是Spring,以及如何创建一个Spring项目,OK,那么单单掌握Spring是完全不够的,Spring的家族体系十分强大,我们还需要深入学习,以便于我们后续达到能独立做项目的水平。今天我们来学习SpringBoot。🏜 📲目录 一、

    2024年02月03日
    浏览(50)
  • 【Spring框架全系列】Spring更简单的读取和存储对象

    📬📬哈喽,大家好,我是小浪。上篇博客我们介绍了如何创建一个spring项目,并且如何的存、取对象,介绍了相关方法,那么本篇博客将接着上篇博客的内容介绍如何更加简单的读取和存储对象。 🌃在 Spring 中想要更简单的存储和读取对象的核⼼是使⽤注解,也就是我们接

    2024年02月05日
    浏览(42)
  • FreeRTOS 全系列笔记——基于V10.4

    基于crotex-m处理器新建FreeRTOS工程 为什么使用嵌入式实时操作系统(RTOS) FreeRTOS——创建任务 FreeRTOS的任务调度和管理 FreeRTOS-内核链表数据结构 FreeRTOS-内核对时间的测量 FreeRTOS-内核中的钩子(Hook)函数 FreeRTOS-软件定时器的使用 FreeRTOS-软件定时器的实现原理 FreeRTOS-延后执行机制

    2024年02月04日
    浏览(39)
  • 小米红米全系列官方原厂预装系统

    小米红米全系列官方原厂预装系统恢复镜像 1.全系列为原厂预装恢复镜像系统,专机专用 2.自带原机所有驱动,主题,Logo,Office等,再次恢复原厂 链接: https://pan.baidu.com/s/1snKOsH3OMl3GZLqeAf-GLA?pwd=8888 3.支持型号如下: Xiaomi Book 12.4 二合一 Xiaomi Book Air 13 Redmi G (Pro) 游戏本 2022 锐

    2024年02月11日
    浏览(50)
  • Radware负载均衡-全系列产品证书更新(二)

    简单介绍一下关于Radware APSolute Vision平台的证书更新。 更新证书有两种方式,一种为自签发,另外一种为导入第三方证书,且更新证书仅能通过命令行的形式更新证书。两种方式都会导致APSolute Vision平台设备的重启(老版本,最新版本只会导致当前访问vision会话中断),请注

    2024年01月16日
    浏览(53)
  • 云安全系列4:解析云安全工具集

    随着组织越来越多地将数据和应用转移到云端,云安全在确保工作负载安全方面变得至关重要。Gartener 就表示:“云优先战略现在已十分普遍,甚至在不愿承担风险的企业机构中也是如此。但由于缺乏确保安全云计算部署所必需的技能和工具,因此执行仍然受到阻碍。” 在了

    2024年02月02日
    浏览(45)
  • 【云安全系列】Seccomp—云安全syscall防护利器

    Seccomp(全称 “Secure computing”),早在 2.6.12 版本(2005年3月8日)就引入到内核中,是通过只允许内核支持部分 syscall(系统调用),或者拒绝内核认为可能有危险的 syscall 集合的方式,来限制一个进程所支持的 syscall调用。最初,Seccomp 只允许使用read、 write、 _exit、sigreturn

    2024年02月08日
    浏览(42)
  • Oracle全系列版本官网下载保姆及教程

    下面以下载Oracle12cR2为例说明下载的整个过程。 基本步骤如下: 先注册一个Oracle账号并登录; 进入到客户下载页面搜索要下载的数据库版本; 得到Oracle下载器(Oracle_SSN_DML_xxxxx.exe),注意:每下载一次都会得到一个Oracle的下载器; 运行下载器进行下载 官网地址:https://www.or

    2024年01月17日
    浏览(53)
  • 苹果发布会:iPhone 15全系列手机正式发布

    在人们的高度关注和热切期待中,苹果公司在北京时间9月13日凌晨1点,准时举办了秋季新品发布会,并如期发布了iPhone 15系列。此次发布会以“好奇心上头”为主题,吸引了全球消费者和科技爱好者的目光。 在发布会上,苹果公司向全球观众展示了iPhone 15系列的手机,iPho

    2024年02月09日
    浏览(66)
  • 【Intel/Altera】 全系列FPGA最新汇总说明,持续更新中

            2023年11月14日英特尔 FPGA中国技术日, Intel刚发布了新的FPGA系列 ,官网信息太多,我这里结合以前的信息, 简单汇总更新一下,方便大家快速了解Intel/Altera FPGA家族。   目录 前言 Altera和Intel 型号汇总 1. Agilex 系列 1.1英特尔® Agilex™ 7 FPGA 和 SoC FPGA 1.2英特尔® Ag

    2024年02月04日
    浏览(53)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包