🌃哈喽,大家好,我是小浪。接着上篇博客,我们学习了springboot配置日志文件,到此,那么springboot的内容也更新的差不多了,由于是初学阶段,所以不学习那么深入,那么我们学习框架都知道SSM,当前我们已经学习完毕springboot了,那么今天就来学习第二个S,Spring MVC;📬📬
📲目录
一、什么是SpringMVC?
二、为什么要学习Spring MVC?
三、我们需要学习的内容
一、连接的功能
二、获取参数;
四、后端参数重命名
五、传递JSON对象
一、什么是SpringMVC?
📡1、构建在Servlet(API)之上的;
⏱️2、是一个web框架;
🧭3、来自于Spring web MVC模块;
📻Model(模型)是应⽤程序中⽤于处理应⽤程序数据逻辑的部分。通常模型对象负责在数据库中存取数据。
📠View(视图)是应⽤程序中处理数据显示的部分。通常视图是依据模型数据创建的。
二、为什么要学习Spring MVC?
三、我们需要学习的内容
一、连接的功能
1、首先还是我们先学习如何创建一个Spring MVC项目;
那么博主这里演示的是通过springboot项目添加spring web依赖,来创建一个Spring MVC项目,其实在之前咱们的SpringBoot项目已经演示过了,只不过前几篇博客写的是springboot的知识;
创建的方法可以参考这篇博客:如何创建一个SpringBoot项目。
只不过我们在创建新项目的时候勾选Spring web依赖即可,如上图所示;
2、选取一个合适的目录,来创建一个新的Spring NVC项目,完成之后界面如下:
3、删除多余的文件目录;
4、鼠标右键此项目,点击红色箭头指向,完成项目的初始化;
勾选maven,点击OK;
5、观察下面两个文件变成蓝色说明初始化完成;
6、在demo包下新建一个类TestController:
代码:
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地址;
我们发现,可以正常访问,这里需要注意代码中的那几个注解,缺一不可,注意理解每个注解的作用,最好能达到记忆的效果;
这里说明一下,我们可以使用这个注解@RestController代替@ResponseBody 和 @Controller,能够达到一样的效果,非常的方便;
一、@RequestMapping 是 post 还是 get 请求?
1、首先@RequestMapping肯定是get请求,因为我们通过浏览器来访问,可以在浏览器页面查看网页源代码来观察到;F12查看网页源代码,点击all;
我们借助postman来验证 @RequestMapping是否为post方法;首先复制我们的url地址,放到postman里面,选择post请求,点击send;
由此得出结论@RequestMapping即支持get请求,又支持post请求;
@RequestMapping(value = "/hi",method = RequestMethod.GET)
@GetMapping("/hi")
或者指定@RequestMapping 支持post请求方法;
@PostMapping("/hi")
@RequestMapping(value = "/hi",method = RequestMethod.POST)
当指定为post请求的时候,我们再次通过postman设置为get请求看能否访问到;
我们发现报错了,说明显示指定请求生效了;
二、获取参数;
1、我们可以在原先的函数sayH中提供一个参数name,用来举例;
2、运行启动类,在浏览器url地址里面输入:http://localhost:8080/user/hi?name=zhangsan
注意当有多个参数时,前后端进⾏参数匹配时,是以参数的名称进⾏匹配的,因此参数的位置是不影响后端获取参数的结果;
注意在Spring MVC中传递参数一一定要传包装类型,而不是基础类型;
在TestController下新建一个方法;
@RequestMapping("/can")
public String sayHi2(int id){
return "id="+id;
}
浏览器url中访问:
我们发现直接会报一个500回来,为什么呢?我们把传递参数的类型换成包装类试一下;
@RequestMapping("/can")
public String sayHi2(Integer id){
return "id="+id;
}
运行结果:
当需要一个基础类型,但又忘记传递的时候,使用基础类型会报错,使用包装类型不会,只是值为null;
如何进行热部署?
1、File -> settilngs ->找到红色箭头指向的框,勾选后面那个,点击OK;
2、开启热部署,点击搜索,输入registry,点击第一个;
3、老版本ide(2021之前)的走这一步,新版本不用;
idea2021之后的版本:
到这一步,springboot热部署就已经完成了;那么idea热部署的本质是重启spring boot项目,一般会有3s左右的延迟;
三、传递对象;
1、在demo包下新建一个类User;
User类代码:
package com.example.demo.controller;
import lombok.Data;
@Data
public class User {
private int id;
private String name;
private int age;
}
@GetMapping("/show-user")
public String ShowUser(User user){
return user.toString();
}
浏览器输入url地址,传递相应参数(前端实现)http://localhost:8080/user/show-user?id=1&name=zhangsan&age=20
四、后端参数重命名
@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
要注意,使用这个注解@RequestParam的时候,必须要传递参数,否则会报错;
当然我们可以通过设置 @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对象
2、TestController类下代码:
@PostMapping("/show-json-user")
public String showJson(@RequestBody User user){
return user.toString();
}
3、在postman中进行测试;http://localhost:8080/user/showJson
文章来源:https://www.toymoban.com/news/detail-470236.html
📬📬OK,那么今天的Spring MVC学习内容就到这里啦,下篇博客我们继续来肝Spring MVC剩下的内容,感谢阅读,点个订阅,以便于及时收到更新的信息哈!📝💡💡文章来源地址https://www.toymoban.com/news/detail-470236.html
到了这里,关于【Spring框架全系列】初识Spring MVC(上)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!