• 【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";
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    指定路由接收请求的方法

    public class TestController {
        // 目标,只支持POST请求
        // 方法一、设置RequestMapping method属性
        // @RequestMapping(value = "/hi", method = RequestMethod.POST)
    
        // 方法二、使用@PostMapping
        @PostMapping("hi")
        public String sayHi() {
            return "hi, Spring MVC";
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    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;
        }
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    2.2.2 获取对象
    localhost:8080/test/show-user?id=1&name=张三&age=123
    
    • 1
    @GetMapping("/show-user")
    public String showUser(User user) {
        return user.toString();
    }
    
    • 1
    • 2
    • 3
    • 4
    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;
    }
    
    • 1
    • 2
    • 3
    • 4

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

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

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

    2.2.4 @RequestBody 接收Json对象

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

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

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

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

    直接从URL中获取参数

    @PostMapping("/logon/{name}/{password}")
    public String logon(@PathVariable("name") String name, @PathVariable(password) String password) {
        return name + ":" + password;
    }
    
    • 1
    • 2
    • 3
    • 4
  • 相关阅读:
    1.2 Hadoop简介-hadoop-最全最完整的保姆级的java大数据学习资料
    100天精通Andriod逆向——第5天:app逆向流程简介
    系列文章|云原生时代下微服务架构进阶之路 - Spring Cloud
    Golang vs Rust 为后端选择哪种语言?
    【SSM -MyBatis篇03】MyBatis Generator(MBG)配置属性详解(基于MyBatis3) - 逆向生成 - 配置MBG模板
    MATLAB算法实战应用案例精讲-【图像处理】SLAM技术详解
    MySQL中的数字函数使用
    java里面i++和++i
    外国电影字幕翻译,怎么把英文字幕翻译成中文字幕?
    Linux用户管理
  • 原文地址:https://blog.csdn.net/m0_69442905/article/details/134660807