【Java Spring】Spring MVC基础

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;
}
  • 22
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Spring MVCSpring框架的一个核心模块,它是一个基于Java的Web框架,实现了MVC模式,并继承了Servlet API。它可以感知用户在浏览器中输入的URL,并根据配置的路由规则来处理请求。学习Spring MVC的原因是因为现在绝大部分的Java项目都是基于Spring或者Spring Boot的,而Spring MVC作为Spring框架的核心模块,是开发Java后端项目的重要组成部分。此外,Spring框架及其相关的框架(如Spring Boot、Mybatis等)在Java开发中被广泛应用,具有很好的生态系统和社区支持。因此,学习Spring MVC可以帮助开发者更好地理解和应用Java后端开发的相关技术。\[1\]\[2\]\[3\] #### 引用[.reference_title] - *1* *2* [【JavaSpring MVC程序开发](https://blog.csdn.net/qq_63474430/article/details/129338488)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [Java后端开发需要学什么](https://blog.csdn.net/m0_70565884/article/details/124593218)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小白在进击

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值