一文了解Spring MVC(上)

news2024/12/24 23:22:47

目录

什么是Spring MVC

什么是MVC 

Spring MVC 和MVC的区别 

怎么学Spring MVC 

Spring MVC的创建和连接

 @RequestMapping注解

获取参数

传递基础数据类型/包装类型(无注解)

 添加@RequestParam注解(使用在方法参数上)

 传递自定义对象

form-data格式中的文件上传 

接收json格式的数据

什么是Spring MVC

官方解释:Spring Web MVC is the original web framework built on the Servlet API and has been included in the Spring Framework from the very beginning. The formal name, “Spring Web MVC,” comes from the name of its source module (spring-webmvc), but it is more commonly known as “Spring MVC”.

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

 对Servlet有所了解的人应该知道,Servlet是jdk提供的基于java语言进行web开发的一套标准规范(定义了很多api类或接口等等),我们开发的java web项目部署到web服务器上,运行起来本质上,是调用该web服务器的具体实现。以此达到程序基于servlet标准规范来开发,可以无缝运行在任意支持servlet的web服务器中(servlet容器->替我们管理servlet所有实例对象的整个生命周期)。

什么是MVC 

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

  • Model(模型):用于请求数据和响应数据的转换。(自动的将请求数据转换为java对象)
  • View(视图):返回给前端的。
  • Controller(控制器):用于处理请求和响应

Spring MVC 和MVC的区别 

MVC 是一种思想,而 Spring MVC 是对 MVC 思想的具体实现。

怎么学Spring MVC 

学习Spring MVC我们只需要掌握以下3个功能:

  1. 连接功能:将浏览器和java程序连接起来
  2. 获取参数的功能:用户访问是时候会带一些参数,在程序中要想办法获取到参数
  3. 输出数据功能:执行了业务逻辑后,要把程序执行的结果返回给用户

Spring MVC的创建和连接

Spring MVC 可以基于 Spring Boot 创建,也就是创建一个 Spring Boot 项目,创建一个UserController类,具体代码如下:

@Controller
@Slf4j
@RequestMapping("/user")
public class UserController {
    @RequestMapping("/login")
    public String login(){
        return "/index.html";
    }

}

 

访问http://localhost:8080/user/login 就能打印登录的信息了

 @RequestMapping注解

作用:表示服务资源的信息(路径,请求方法,响应类型等等)

可以使用在类和方法上,服务资源路径(类上路径+方法上路径)

@RequestMapping默认是get方式的请求(可以使用postman来测试)

如何使用post方法

 

获取参数

传递基础数据类型/包装类型(无注解)

在 Spring MVC 中可以直接用方法中的参数来实现传参,比如以下代码:

@Controller
@RequestMapping("/test")
@Slf4j
@ResponseBody
public class TestController {
    @RequestMapping("/simpleType")
    public String SimpleType(String username, String password, Integer age){
        log.debug("username={},password={},age={}",username,password,age);
        return "好好学习";
    }
}

在postman中的执行结果为: 

 

 注意:

如果是基础数据类型,请求数据就必须有这个字段

前端字段的类型,要和后端字段类型一致,否则也会报错

 添加@RequestParam注解(使用在方法参数上)

使用@RequestParam注解,默认表示请求必须包含该字段,也可以配置为选填。

public String SimpleType有注解(@RequestParam String username, 
                                @RequestParam String password, 
                                @RequestParam Integer age){
        log.debug("username={},password={},age={}",username,password,age);
        return "好好学习";
    }

如果没包含就会报错

 

 设置required=false则表示选填

   @RequestMapping("/requestParam")
    public String SimpleType有注解(@RequestParam String username,
                                @RequestParam(required = false) String password,
                                @RequestParam Integer age){
        log.debug("username={},password={},age={}",username,password,age);
        return "好好学习";
    }

此时password为选填字段 

 

 传递自定义对象

    @RequestMapping("/object")
    public String 对象(User user){
        log.debug("user={}",user);
        return "好好学习";
    }
public class User {
    private String username;
    private String password;
    Integer age;
}

form-data格式中的文件上传 

 @RequestMapping("/upload1")
    public String 上传文件1(MultipartFile head){
        log.debug("接收的上传文件名称:{}", head.getOriginalFilename());
        return "好好学习";
    }

接收json格式的数据

//接收json格式的数据:@RequestBody
    @RequestMapping("/json")
    public String json(@RequestBody User user){
        log.debug("user对象接收的数据:{}", user);
        return "好好学习";
    }

 

 

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

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

相关文章

python——GIL锁详解

文章目录一、GIL全局解释器锁二、为什么会有GIL锁?三、多线程无法利用多核优势?计算密集型和IO密集型计算密集型——采用多进程计算密集型——采用多线程IO密集型——采用多进程IO密集型——采用多线程四、总结一、GIL全局解释器锁 1、GIL锁不是python的…

C语言 数据的存储

C语言 数据的存储一、数据与进制之间的关系1. 十进制与二进制之间的转换2. 二进制与十六进制之间的转换二、整型数据存储1. 原、反、补码2. 整型数据在内存中的存储3. 为什么整型数据存在内存中存储的是补码4. 有符号和无符号的数据类型有符号和无符号的存储范围猜想5. 关于 ch…

Java项目:SSH企业人力资源管理系统

作者主页:源码空间站2022 简介:Java领域优质创作者、Java项目、学习资料、技术互助 文末获取源码 项目介绍 企业人力资源管理系统,分为超级管理员与普通管理员两种角色,超级管理员可以对普通管理员进行添加、删除等操作; 超级管理…

【k8s】1、基础概念和架构及组件

文章目录一、kubernetes概述1、什么是kubernetes?2、应用程序部署方式的演变3、为什么要用kubernetes?二、kubernetes 特性三、Kubernetes集群架构与核心组件1、master组件1.1 kube-apiserver(中央枢纽)1.2 kube-controller-manag…

股价下跌18%后,满帮集团(YMM)的财务业绩正在加速放缓

来源:猛兽财经 作者:猛兽财经 市场与竞争 根据Beroe Advantage Procuremen的一份市场研究报告,2020年中国道路运输服务市场的规模估计为250亿美元。 这意味着这个行业近年来的复合年增长率为6.5%。 物流参与者往往集中在中国的西南和中南部地…

.NET跨平台框架选择之一 - Avalonia UI

1. Avalonia UI简介 Avalonia UI文档教程:https://docs.avaloniaui.net/docs/getting-started 随着跨平台越来越流行,.NET支持跨平台至今也有十几年的光景了(Mono开始)。 但是目前基于.NET的跨平台,大多数还是在使用B/S架构的跨平台上&…

数据分析面试重点

2022年10月求职季,疫情的影响,但是也挡不住各位小伙伴,找工作的热情。目前,数据分析行业大火,相信很多小伙伴都想去这一行业试试水。想要成功进入数据分析行业,就必须得通过数据分析面试,面试的…

计控实验(二)——积分分离PID控制实验

太原理工大学计算机控制技术实验之积分分离PID控制实验 积分分离PID控制实验实验原理实验内容实验结果思考题实验原理 上图是一个典型的PID 闭环控制系统方框图,其硬件电路原理及接线图可设计如下,图中画“○”的线需用户在实验中自行接好,对…

跟艾文学编程《Python基础》PyCharm 安装

作者:艾文,计算机硕士学位,企业内训讲师和金牌面试官,公司资深算法专家,现就职BAT一线大厂。 邮箱:1121025745qq.com 博客:https://edu.csdn.net/lecturer/894?spm1003.2001.3001.4144 内容&am…

[附源码]java毕业设计文具销售系统

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

6、子查询 、having、(not) exists、表中增加一列并补充数据、删除表中对应的数据-mysql

目录子查询一、需求分析与问题解决1、实际问题2、子查询的基本使用3、子查询的分类二、单行子查询1、单行比较操作符2、 代码示例3、HAVING 中的子查询4、CASE中的子查询5、 子查询中的空值问题6、 非法使用子查询三、多行子查询1、多行比较操作符2、代码示例3、空值问题四、 相…

《Flowable流程引擎从零到壹》Flowable流程引擎介绍和实战项目初始化流程引擎实例

14天学习训练营导师课程: 邓澎波《Flowable流程引擎-基础篇【2022版】》 邓澎波《Flowable流程引擎-高级篇【2022版】》 学习笔记《Flowable流程引擎从零到壹》回城传送 ❤️作者主页:小虚竹 ❤️作者简介:大家好,我是小虚竹。Java领域优质创…

mysql中的这些日志,你都知道吗?

在使用mysql的过程中,经常会听到mysql具有数据恢复能力,当我们在业务开发中误删了某些数据后,可以将数据库恢复到误删之前的状态。同时还具有故障恢复能力,当数据库所在的机器突然掉电停机后,mysql也可以保证数据一致性…

Java8 Stream 的核心秘密

小伙伴们好呀,我是 4ye,今天来分享下 Java8 Stream 的源码 核心回顾 stream 是一次性的,不是数据结构,不存储数据,不改变源数据.。API 分为终端和中间操作,中间操作是惰性的,碰到终端才去执行。…

python自动化测试

测试软件:pycharm 解释器版本:3.10.7 测试浏览器:谷歌 或 edge 谷歌web驱动下载地址:chromedriver.storage.googleapis.com/index.html edgeweb驱动下载地址:Microsoft Edge WebDriver - Microsoft Edge Developer 第一…

免费查题接口系统后台

免费查题接口系统后台 本平台优点: 多题库查题、独立后台、响应速度快、全网平台可查、功能最全! 1.想要给自己的公众号获得查题接口,只需要两步! 2.题库: 查题校园题库:查题校园题库后台(点…

零基础自学javase黑马课程第十三天

零基础自学javase黑马课程第十三天 ✨欢迎关注🖱点赞🎀收藏⭐留言✒ 🔮本文由京与旧铺原创,csdn首发! 😘系列专栏:java学习 💻首发时间:🎞2022年11月7日&…

springboot视图渲染技术

目录 一、Freemarker简介及入门 二、Freemarker语法 1、取值 1.1默认值 1.2 对null值进行判断 2、条件 3、循环 4、include 5、 局部变量(assign)/全局变量(global) 一、Freemarker简介及入门 学习网址:什么是 FreeMarker? - FreeMarker 中文官方参考手册 …

2022强网拟态pwn-webheap

2022强网拟态pwn-webheap 这题的逻辑是一开始笔者硬逆给逆出来了,但是后面在Ex师傅的点播下成功的在github上找到了这个的原生项目 https://github.com/google/libnop 在审计的过程中发现了至关重要的信息,发现和逆向的格式一样的东西,就是…

BCN-PEG2-Mal,BCN-OH,endo-BCN-PEG2-BiotinBCN几种衍生物的特点

BCN-PEG 是一类具有双环[6.1.0]壬炔的 PEG 接头。它用于叠氮化物反应性无铜点击化学。BCN在没有催化剂的情况下很容易与叠氮官能化化合物或生物分子反应形成稳定的三唑键,PEG间隔物增加了所得化合物的水溶性。今天这一章西安凯新生物科技有限公司​主要为大家分享BC…