跟着zz学Java 07-SpringMVC1-一个最简单的例子

前言

前面我们把Java对MYSQL数据库的操作除了jpa以外都尝试了一遍,但是一直都是用测试类去测试功能,但是一直都没有跟web有啥关系,哈哈,别着急嘛,开始学习就要把知识先拆开,分而治之,后面我们再来串联起来,所以从这小节开始,我也打算换个思路,从顶层开始,直接用SpringBoot整合SpringMVC,然后先用postman,再上Swagger,再就转向前端了,前端写个基本的界面加上一个增删改查,然后回头来配置一个拦截器,再上redis,做完之后,把整个项目用容器部署一下,差不多整个是这样个安排。

反正就是一个思路,用最小的切面,让大家对整个技术栈有个完整的认识。

康康官网

先把Spring官网带大家看看吧

https://spring.io/

image-20201210102006810

Spring makes Java cloud-ready这是最新的口号,看来Spring为了云原生这一块的应用,下了不少功夫,这个我们后面再讲,毕竟之前博客搭建rocketMQ的时候就看到了,一个单机部署的消息队列都是起步8 g内存的,哈哈,所以咱目前还是以单体应用为主,一般项目最多上个redis,消息队列都用得少,Redis肯定会讲的

官网没事多逛逛哈,养成习惯就好了

引入依赖

咱们在之前的mybatis-plus项目的基础上进行开发

加上web starter就好了

<dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
</dependency>

记得点一下刷新依赖哈

仅仅使用Controller来返回测试

新建一个Controller
com.example.demo.controller包下创建UserController

package com.example.demo.controller;

import com.example.demo.dataobject.UserDO;
import com.example.demo.utils.MD5Util;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

// 表示这是控制器类 直接使用接口方法返回结果,就是直接返回json哈
@RestController
// 表示我们请求的路径 我们请求这个 controller 的时候就需要加上 /user 这个前缀
@RequestMapping("/user")
public class UserController {

    // GetMapping 标识请求是发送 GET 请求 路径匹配 {id} 表示id是请求参数
    @GetMapping("/{id}")
    // @PathVariable标识这里用的是前端请求过来的 路径参数 就是方法可以把待会儿传过来的路径中的id 传入这个方法
    public UserDO get(@PathVariable("id") Integer id) {
        // 模拟一个返回用户
        UserDO userDO = new UserDO();
        userDO.setId(id); // 传入我们在请求中给出的 id
        userDO.setUsername("SpringMVC");
        userDO.setPassword(MD5Util.getMD5("123"));
        return userDO; // 由于由我们的 @RestController 所以我们会把返回的 userDO 对象 解析成json串
    }
}

运行我们的主方法

打开Postman测试接口(后面用我们炫酷的 swagger)

image-20201210104246788

点击这里新建一个测试请求

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ZhznIiwB-1612067295826)(C:\Users\15292\AppData\Roaming\Typora\typora-user-images\image-20201210104316543.png)]

从我们的Console中可以看到我们应用启动(其实就是Tomcat)的端口

image-20201210104616114 image-20201210111744434

我们在路径中直接传入参数

路径前面可以勾选请求方法

image-20201210112021298

然后 Send

上面那个匹配的路径是localhost:8080/user ,没有涉及到参数传递

后面还有一些例子,大家自己练习把,就是把请求方法改变了,这里还涉及到一个知识点,Restful API规范

// GetMapping 标识请求是发送 GET 请求
@GetMapping("/get") // 修改URL为这个
// 传入的时候 用请求参数 ?id=xxx 的形式
public UserDO get(@RequestParam("id") Integer id) {
    // 模拟一个返回用户
    UserDO userDO = new UserDO();
    userDO.setId(id); // 传入我们在请求中给出的 id
    userDO.setUsername("SpringMVC");
    userDO.setPassword(MD5Util.getMD5("123"));
    return userDO; // 由于由我们的 @RestController 所以我们会把返回的 userDO 对象 解析成json串
}
image-20201210112705619

暂时废弃的例子

不太推荐用这种请求形式哈

package com.example.demo.controller;

import com.example.demo.dataobject.UserDO;
import com.example.demo.utils.MD5Util;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.*;

// 表示这是控制器类 直接使用接口方法返回结果,就是直接返回json哈
@RestController
// 表示我们请求的路径 我们请求这个 controller 的时候就需要加上 /user 这个前缀
@RequestMapping("/user")
public class UserController {

    @GetMapping("")
    public List<UserDO> list() {
        List<UserDO> result = new ArrayList<>();
        for (int i=0; i<5; i++) {
            UserDO userDO = new UserDO();
            userDO.setId(i);
            userDO.setUsername(UUID.randomUUID().toString());
            userDO.setPassword(MD5Util.getMD5(String.valueOf(i)));
            result.add(userDO);
        }
        return result;
    }

    // GetMapping 标识请求是发送 GET 请求 路径匹配 {id} 表示id是请求参数
    @GetMapping("/{id}")
    // @PathVariable标识这里用的是前端请求过来的 路径参数 就是方法可以把待会儿传过来的路径中的id 传入这个方法
    public UserDO get(@PathVariable("id") int id) {
        // 模拟一个返回用户
        UserDO userDO = new UserDO();
        userDO.setId(id); // 传入我们在请求中给出的 id
        userDO.setUsername("SpringMVC");
        userDO.setPassword(MD5Util.getMD5("123"));
        return userDO; // 由于由我们的 @RestController 所以我们会把返回的 userDO 对象 解析成json串
    }
}

这里有个坑,参数不能用Integer,要用int,否则会404

image-20201210112920342
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值