【Java Spring】Spring MVC基础

文章目录

    • 1、Spring MVC 简介
    • 2、Spring MVC 功能
      • 1.1 Spring MVC 连接功能
      • 2.2 Spring MVC 获取参数
        • 2.2.1 获取变量
        • 2.2.2 获取对象
        • 2.2.3 @RequestParam重命名后端参数
        • 2.2.4 @RequestBody 接收Json对象
        • 2.2.5 @PathVariable从URL中获取参数

1、Spring MVC 简介

Spring Web MVC是构建于Servlet API构建的Web框架,来自于Spring webMVC模块, MVC是model View Controller的缩写,是软件工程中的一种软件架构模式,它把软件系统分为模型,视图,控制器三个基本部分

  • Model(模型)是应用程序中用于处理应用程序数据逻辑的部分。通常模型对象负责在数据库中存取数据
  • View(视图)是应用程序中处理数据显示的部分,通常视图是依据模型数据创建的
  • Controller(控制器)是应用程序中处理用户交互的部分,通常控制器。通常控制器负责从视图中读取数据,控制用户输入,并向模型发送数据

2、Spring MVC 功能

学习Spring MVC,需要掌握三个功能

1、连接的功能:将用户(浏览器)和Java程序连接起来,也就是访问一个地址能够调用到我们的Spring程序

2、获取参数的功能:用户访问的时候会带一些参数,在程序中需要想办法获取到参数

3、输出数据的功能:执行了业务逻辑后,将程序执行的结果返回给用户

对于Spring MVC来说,掌握了以上3个功能就相当于掌握了Spring MVC

SSM项目 = Spring + Spring MVC + MyBatis

1.1 Spring MVC 连接功能

// @Controller                 // 让框架启动的时候自动加载当前类
// @ResponseBody               // 告知返回结果是数据
@RequestMapping("/test")  // 路由注册, 浏览器获取前端接口和后端程序连接功能实现(支持GET,POST)
@RestController  // 等于 ResponseBody + Controller
public class TestController {@RequestMapping("/hi")public String sayHi() {return "hi, Spring MVC";}
}

指定路由接收请求的方法

public class TestController {// 目标,只支持POST请求// 方法一、设置RequestMapping method属性// @RequestMapping(value = "/hi", method = RequestMethod.POST)// 方法二、使用@PostMapping@PostMapping("hi")public String sayHi() {return "hi, Spring MVC";}
}

2.2 Spring MVC 获取参数

传参数注意事项:在SpringMVC中传递参数一定要使用包装类型,而非基础类型。如果设置为基础类型,忘记传递该参数,使用基础类型会直接报错(程序500),而使用包装类型不会报错,只是值为null

2.2.1 获取变量
@RequestMapping("/test")  // 路由注册
@RestController  // 等于 ResponseBody + Controller
public class TestController {@GetMapping("/hi")public String sayHi(String name) {return "Hi + " + name;}
}
2.2.2 获取对象
localhost:8080/test/show-user?id=1&name=张三&age=123
@GetMapping("/show-user")
public String showUser(User user) {return user.toString();
}
2.2.3 @RequestParam重命名后端参数

前端传递的参数key和我们后端接收的key可以不一致,比如前端传递了一个time,而后端想要使用createtime字段来接收,这样就会出现参数不匹配导致后端接受不到前端数据

可以使用@RequestParam来重命名前后端的数据

@GetMapping("/show-time")
public String showTime(@RequestParam("t") String startTime, @RequestParam("t2") String endTime) {return "开始时间:" + startTime + "结束时间:" + endTime;
}

需要注意使用@RequestParam注解自带一个required属性,被设置的参数将会被默认设置成必传的,可以通过给@RequestParam注解设置false属性进行取消

@RequestParam(value = "t", required = false)  // @RequestParam 注解设置required 属性

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

2.2.4 @RequestBody 接收Json对象

PostMan构建携带Json对象的请求:在Body中选择原生模式,然后选择数据类型为Json

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

@RequestBody会接收请求的正文(POST方法),将其中的数据交给接收的对象

// 接收Json对象,场景:和第三方系统进行通信时常见场景
@PostMapping("/show-user")
public String showUser(@RequestBody User user) {return user.toString();
}
2.2.5 @PathVariable从URL中获取参数

直接从URL中获取参数

@PostMapping("/logon/{name}/{password}")
public String logon(@PathVariable("name") String name, @PathVariable(password) String password) {return name + ":" + password;
}

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

MySQL数据库入门到大牛_基础_16_变量、流程控制与游标

文章目录 1. 变量1.1 系统变量1.1.1 系统变量分类1.1.2 查看系统变量 1.2 用户变量1.2.1 用户变量分类1.2.2 会话用户变量1.2.3 局部变量1.2.4 对比会话用户变量与局部变量 2. 定义条件与处理程序2.1 案例分析2.2 定义条件2.3 定义处理程序2.4 案例解决 3. 流程控制3.1 分支结构…

操作系统安全实验一Linux系统的基本操作

一、实验要求 二、实验步骤 (1)Linux命令格式Linux系统中bash命令的一般格式是 :命令名[选项][处理对象]例:ls -la mydir 三、目录操作 ls指令 ls指令 ls指令 cd指令 pwd指令 四、文件操作 cat指令 cat指令 rm指令 cp指令 mv指令 五、系统权限设置 who指令 chmod指令 groups指…

vue建立组件无校验版

实现功能&#xff1a; 切换&#xff0c;相当于tab 1、非组件代码&#xff1a; <template><div><div class"tabStyle"><div v-for"(item,index) in tabTitle" :key"index" class"bordItemStyle" :class"c…

Python基础语法之学习print()函数

Python基础语法之学习print函数 1、代码2、效果 1、代码 print("Hello World") print("Hello World1","Hello World2") print("Hello World1\n","Hello World2") print("Hello World",end" 默认结束符是行号…

高效视频剪辑:按指定时长批量分割视频,释放无尽创意

随着数字媒体技术的不断发展&#xff0c;视频剪辑已经成为日常生活中不可或缺的一部分。无论是制作电影、电视剧&#xff0c;还是创意生活短视频&#xff0c;视频剪辑都扮演着重要的角色。然而&#xff0c;对于许多非专业人士来说&#xff0c;视频剪辑可能是一项复杂而耗时的任…

万字解析设计模式之观察者模式、中介者模式、访问者模式

一、观察者模式 1.1概述 观察者模式是一种行为型设计模式&#xff0c;它允许一个对象&#xff08;称为主题或可观察者&#xff09;在其状态发生改变时&#xff0c;通知它的所有依赖对象&#xff08;称为观察者&#xff09;并自动更新它们。这种模式提供了一种松耦合的方式&…

s_v_web_id或fp协议过签名,dy滑块

某音s_web_id或fp协议过签名 ‘h5_sdk_version’, ‘2.36.0’ "search_impr":{"entity_id":"1135137973613200"},"link_item_list":null,"user_permissions":null,"offline_info_list":null,"is_cf":…

MySQL运行在docker容器中会损失多少性能

前言 自从使用docker以来&#xff0c;就经常听说MySQL数据库最好别运行在容器中&#xff0c;性能会损失很多。一些之前没使用过容器的同事&#xff0c;对数据库运行在容器中也是忌讳莫深&#xff0c;甚至只要数据库跑在容器中出现性能问题时&#xff0c;首先就把问题推到容器上…

vue怎么实现国际化? vue-i18n 插件实现国际化,支持切换不同语言

依赖的文档开始 | Vue I18n 一、安装 npm install vue-i18n 如果在一个模块系统中使用它&#xff0c;你必须通过 Vue.use() 明确地安装 vue-i18n&#xff1a; import Vue from vue import VueI18n from vue-i18nVue.use(VueI18n)二、使用 在 src 下创建 lang 文件夹 1.准…

什么是yum?

&#x1f388;个人主页:&#x1f388; :✨✨✨初阶牛✨✨✨ &#x1f43b;推荐专栏1: &#x1f354;&#x1f35f;&#x1f32f;C语言初阶 &#x1f43b;推荐专栏2: &#x1f354;&#x1f35f;&#x1f32f;C语言进阶 &#x1f511;个人信条: &#x1f335;知行合一 &#x1f…

优雅使用docker-compose部署Skywalking

Skywalking使用docker-compose部署 version: 3.1 services: // 部署elasetic search 用于存储获取的应用信息与日志elasticsearch:image: elasticsearch:7.13.3container_name: elasticsearchprivileged: trueenvironment:- "cluster.nameelasticsearch" #设置集群名…

计算机网络:快速了解网络框架

文章目录 前言一、什么是Internet&#xff1f;1.从具体构成角度什么是协议&#xff1f; 2.从服务角度3小结 二、网络边缘1.采用网络设施面向连接服务&#xff08;TCP&#xff09;2.采用基础设施的无连接服务&#xff08;UDP&#xff09; 三、网络的核心1.电路交换2.分组交换3.分…