SpringBoot 2.7教程:SpringBoot 整合 Web 项目搭建及实践应用-2022年最新图文版本

SpringBoot 2.7教程:SpringBoot + Web 项目搭建及实践应用-2022年最新图文版本

SpringBoot 2.7教程:SpringBoot + Web 项目搭建,异常捕获处理-2022年最新图文版本

SpringBoot 2.7教程:SpringBoot + Mysql 项目应用-2022年最新图文版本

SpringBoot 2.7教程:SpringBoot 集成 jsp 页面开发 -2022年最新图文版本

SpringBoot 2.7教程:SpringBoot 实现文件上传,图片上传并显示功能-2022年最新图文版本

SpringBoot 2.7教程:springboot 设置全局字符编码,解决乱码问题-2022年最新图文版

SpringBoot 2.7教程:SpringBoot mybatis 多数据源的整合方法-2022年最新图文版本

SpringBoot 2.7教程:SpringBoot 整合 RocketMQ 项目搭建-2022年最新图文版本

SpringBoot 2.7教程:SpringBoot 整合 RabbitMQ 项目搭建-2022年最新图文版本

SpringBoot 2.7教程:SpringBoot 整合 MongoDB 项目搭建-2022年最新图文版本

SpringBoot 2.7教程:SpringBoot 整合 Redisson 项目搭建-2022年最新图文版本

SpringBoot 2.7教程:SpringBoot 整合 Redis 项目搭建-2022年最新图文版本

本章主要目标: 

1.初识SpringBoot

2.使用版本SpringBoot搭建Web项目,实现测试类和方法

3.学习使用Restful接口格式

4.项目实践(入参、出参、API返回、错误码、异常)

首先我们打开官方网站:Spring Boot(小黑板敲重点,一定要记住这个网址,以后会经常光顾)

当前最新的版本是2.7,下面我们开始进行搭建系统。

一、右键新建Module

  

项目实践:

一、入参校验,新建controller.form.loginForm。

添加两个入参,userName、Password

package com.xiaoma.usercenter.controller.form;

import javax.validation.constraints.NotNull;

/**
 * @author fenghaikuan
 * @description 接收登录提交的数据
 * @className LoginForm
 */
public class LoginForm {
    @NotNull
    private String userName;
    @NotNull
    private String password;

    public String getUserName() {
        return userName;
    }

    public void setUserName(String userName) {
        this.userName = userName;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    @Override
    public String toString() {
        return "UserForm{" +
                "userName='" + userName + '\'' +
                ", password='" + password + '\'' +
                '}';
    }
}

二、出参管理,新建controller.vo.UserVO

添加三个入参,userId、userName、userLevel

package com.xiaoma.usercenter.controller.vo;

/**
 * @author fenghaikuan
 * @description TODO
 * @className UserVO
 */
public class UserVO {
    private Integer userId;
    private String userName;
    private Integer userLevel;

    public Integer getUserId() {
        return userId;
    }

    public void setUserId(Integer userId) {
        this.userId = userId;
    }

    public String getUserName() {
        return userName;
    }

    public void setUserName(String userName) {
        this.userName = userName;
    }

    public Integer getUserLevel() {
        return userLevel;
    }

    public void setUserLevel(Integer userLevel) {
        this.userLevel = userLevel;
    }
}

三、统一错误码

package com.xiaoma.usercenter.code;
/**
 * @author fenghaikuan
 * 0 请求成功
 * 99999 未知失败
 * 1开头为对通用错误信息
 * 2开头为输入参数错误
 * 3开头为业务调用错误
 * 4开头为数据库数据业务错误
 * 5开头为缓存调用错误
 * @description 基础返回码
 * @className BaseCode
 */
public enum CommonCode {
    /**
     * 返回码
     */
    SUCCESS(0, "succ"),
    FAIL(10000, "通用错误信息"),
    SIGN_FAIL(10001, "签名错误"),
    TIME_FAIL(10002, "时间戳超时错误"),
    TOKEN_FAIL(10003, "token错误"),
    AUTH_FAIL(10004, "权限不足"),

    PARAM_FAIL(20000, "参数错误"),
    PARAM_EMPTY_ERROR(20001, "参数为空"),
    PARAM_PATTERN_ERROR(20002, "参数格式不对"),

    FAILED(99999, "系统繁忙,请稍后再试.");
    /**
     * 错误码
     */
    private int code;
    /**
     * 错误信息
     */
    private String message;

    CommonCode(int code, String message) {
        this.code = code;
        this.message = message;
    }
    public int getCode() {
        return code;
    }
    public String getMessage() {
        return message;
    }
}

四、统一Api返回结构

package com.xiaoma.usercenter.response;

import com.xiaoma.usercenter.code.CommonCode;

import java.io.Serializable;

/**
 * @className: Result
 * @description: Api接口返回结构
 * @version: 1.0.0
 * @author: fenghaikuan
 * @date: 2020/7/10 11:10 上午
 */

public class ApiResult<T> implements Serializable {
    private static long serialVersionUID= -6510012126074903516L;
    private int code;
    private String message;
    private T data;
    /**
     * 无参构造函数
     */
    protected ApiResult() {

    }

    /**
     * code和message构造函数
     * @param code
     * @param message
     */
    protected ApiResult(int code, String message) {
        this.code = code;
        this.message = message;
    }

    /**
     * 全参构造函数
     * @param code
     * @param message
     * @param data
     */
    protected ApiResult(int code, String message, T data) {
        this.code = code;
        this.message = message;
        this.data = data;
    }

    /**
     * 成功返回结果
     */
    public static <T> ApiResult<T> success() {
        return new ApiResult<T>(CommonCode.SUCCESS.getCode(), CommonCode.SUCCESS.getMessage());
    }

    /**
     * 成功返回结果
     *
     * @param data 返回的数据
     */
    public static <T> ApiResult<T> success(T data) {
        return new ApiResult<T>(CommonCode.SUCCESS.getCode(), CommonCode.SUCCESS.getMessage(), data);
    }

    /**
     * 失败返回结果
     */
    public static <T> ApiResult<T> failed(CommonCode commonCode) {
        return new ApiResult<T>(commonCode.getCode(), commonCode.getMessage(), null);
    }

    /**
     * 失败返回结果 通用 code 99999
     *
     * @param message 提示信息
     */
    public static <T> ApiResult<T> failed(String message) {
        return new ApiResult<T>(CommonCode.FAILED.getCode(), message, null);
    }

    /**
     * 失败返回结果
     *
     * @param commonCode 错误码
     * @param message  自定义错误信息
     */
    public static <T> ApiResult<T> failed(CommonCode commonCode, String message) {
        return new ApiResult<T>(commonCode.getCode(), message, null);
    }

    /**
     * 失败返回结果
     *
     * @param code    自定义错误码
     * @param message 自定义错误信息
     */
    public static <T> ApiResult<T> failed(int code, String message) {
        return new ApiResult<T>(code, message, null);
    }

    public int getCode() {
        return code;
    }

    public void setCode(int code) {
        this.code = code;
    }

    public String getMessage() {
        return message;
    }

    public void setMessage(String message) {
        this.message = message;
    }

    public T getData() {
        return data;
    }

    public void setData(T data) {
        this.data = data;
    }
}

五、新建Controller

package com.xiaoma.usercenter.controller;

import com.xiaoma.usercenter.controller.form.LoginForm;
import com.xiaoma.usercenter.controller.vo.UserVO;
import com.xiaoma.usercenter.response.ApiResult;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;

/**
 * @author fenghaikuan
 * @description TODO
 * @className UserController
 */
@RestController
public class UserController {
    /**
     * DefaultExceptionHandler LOGGER
     */
    private static final Logger LOGGER = LoggerFactory.getLogger(UserController.class);
    @PostMapping("/user/login")
    public ApiResult<UserVO> userGet(@Validated @RequestBody LoginForm loginForm){

        LOGGER.info("提交的用户数据为:"+ loginForm.toString());
        UserVO userVO = new UserVO();
        userVO.setUserId(1);
        userVO.setUserName(loginForm.getUserName());
        userVO.setUserLevel(10);
        return ApiResult.success(userVO);
    }
}

使用PostMan测试

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,我会尽力为您解答。以下是将Spring Boot项目部署到Docker的步骤: 1. 首先,您需要为您的Spring Boot项目创建一个Dockerfile文件。Dockerfile是一个包含指令的文本文件,用于在Docker容器中构建映像。以下是一个基本的Dockerfile文件示例: ```dockerfile FROM openjdk:8-jdk-alpine ARG JAR_FILE=target/*.jar COPY ${JAR_FILE} app.jar ENTRYPOINT ["java","-jar","/app.jar"] ``` 这个Dockerfile文件指定了一个基础映像(openjdk:8-jdk-alpine),将您的Spring Boot项目的JAR文件复制到Docker容器中,并使用ENTRYPOINT指令在容器内运行JAR文件。 2. 接下来,您需要使用Docker命令构建Docker映像。在终端中,导航到包含Dockerfile文件的目录,并运行以下命令: ```bash docker build -t <image_name> . ``` 这个命令将使用Dockerfile文件构建一个Docker映像,并为映像命名为<image_name>。请注意,最后的句点(.)表示Docker应该在当前目录中查找Dockerfile文件。 3. 构建映像后,您可以使用以下命令启动Docker容器: ```bash docker run -p <host_port>:<container_port> <image_name> ``` 这个命令将使用Docker映像启动一个新的Docker容器,并将容器的端口映射到主机的端口。请将<host_port>替换为您希望容器端口映射到的主机端口,将<container_port>替换为容器中应用程序正在侦听的端口,将<image_name>替换为您之前为Docker映像指定的名称。 4. 最后,您可以使用以下命令查看Docker容器的日志: ```bash docker logs <container_id> ``` 请将<container_id>替换为您的Docker容器的ID号。 希望这些步骤可以帮助您将Spring Boot项目部署到Docker中。如果您有任何疑问,请随时问我。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值