ProjectDay03

该博客介绍了如何在Spring Boot项目中开发学生注册功能,包括注册准备如配置放行路径、创建接收表单的VO类、自定义异常处理,以及控制器和业务逻辑层的编写。此外,还讲解了Spring验证框架,用于增强表单验证的安全性,防止非法数据进入服务器。
摘要由CSDN通过智能技术生成

开发学生注册功能

注册准备

上次课,我们已经分析了注册的业务流程

下面在执行业务之前,需要将准备工作完成

第一步是将注册相关的资源或路径进行放行设置,不需要登录就能进行注册

SecurityConfig类添加放行路径

.antMatchers(// 指定路径
        "/index_student.html",
        "/css/*",
        "/js/*",
        "/img/**",
        "/bower_components/**",
        "/login.html",
    // ↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
        "/register.html",  // 放行注册页
        "/register"        // 放行注册控制器路径
)

第二步:

为了接收表单填写的数据,我们创建一个专用于接收注册表单信息的类

创建vo包

包中创建RegisterVO类

代码如下

@Data
public class RegisterVO implements Serializable {
   

    private String inviteCode;    // 邀请码
    private String phone;         // 手机号/用户名
    private String nickname;      // 昵称
    private String password;      // 密码
    private String confirm;       // 确认密码
    
}

第三步

我们在执行注册业务时有很多判断

例如判断邀请码是否正确,判断手机号是否已经被注册

如果判断不符合注册要求,要提示错误原因

而这种错误提示,在实际开发过程中,一般会以自定义异常的方式来控制\抛出异常

在发生业务中不能继续注册的情况时,使用异常的方式将注册失败的信号通知程序

我们要自己编写自定义异常的类,并为它创建一个专门的包

创建exception包

包中创建自定义异常类(业务异常)ServiceException类

代码可以直接赋值给大家的资料

public class ServiceException extends RuntimeException{
   
    private int code = 500;

    public ServiceException() {
    }

    public ServiceException(String message) {
   
        super(message);
    }

    public ServiceException(String message, Throwable cause) {
   
        super(message, cause);
    }

    public ServiceException(Throwable cause) {
   
        super(cause);
    }

    public ServiceException(String message, Throwable cause,
                            boolean enableSuppression, boolean writableStackTrace) {
   
        super(message, cause, enableSuppression, writableStackTrace);
    }

    public ServiceException(int code) {
   
        this.code = code;
    }

    public ServiceException(String message, int code) {
   
        super(message);
        this.code = code;
    }

    public ServiceException(String message, Throwable cause,
                            int code) {
   
        super(message, cause);
        this.code = code;
    }

    public ServiceException(Throwable cause, int code) {
   
        super(cause);
        this.code = code;
    }

    public ServiceException(String message, Throwable cause,
                            boolean enableSuppression, boolean writableStackTrace, int code) {
   
        super(message, cause, enableSuppression, writableStackTrace);
        this.code = code;
    }

    public int getCode() {
   
        return code;
    }

}

第四步:

使用QueryWrapper实现查询功能

MybatisPlus框架提供的一个查询方式

它能够在不编写sql语句的前提下,按照设置的条件进行查询

下面在测试类中进行演示

// 根据邀请码查询班级信息
// SELECT * FROM classroom
// WHERE invite_code='JSD2001-706246'
@Autowired
ClassroomMapper classroomMapper;
@Test
public void query(){
   
    // 我们先实例化一个QueryWrapper对象
    // 这个对象指定一个泛型,这个泛型就确定了查询的表和返回值类型
    QueryWrapper<Classroom> query=new QueryWrapper<>();
    // QueryWrapper对象实际上就是一个查询条件对象
    // 我们可以在这个对象中设置查询条件
    
  • 5
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值