参数校验

为了实现高性能推荐在 Controller 中使用自定义方法进行校验,使用示例如下

import com.jfinal.kit.StrKit;
import com.litongjava.tio.utils.resp.RespVo;

public class LoginValidator {
  public RespVo validateLogin(String username, String password, String verificationCode) {
    RespVo retval = null;

    //验证username
    if (StrKit.isBlank(username)) {
      retval = RespVo.fail("The username or password cannot be empty");
      return retval;
    }

    //验证其他字段
    // ...
    //验证成功返回null,验证不成功返回RespVo
    return retval;

  }
}

import com.litongjava.jfinal.aop.Aop;
import com.litongjava.tio.http.common.HttpResponse;
import com.litongjava.tio.http.server.annotation.RequestPath;
import com.litongjava.tio.utils.resp.RespVo;
import com.litongjava.tio.web.hello.validator.LoginValidator;
@AController
@RequestPath("/auth")
public class LoginController {

  public RespVo login(String username, String password, String verificationCode) {
    RespVo validateResult = Aop.get(LoginValidator.class).validateLogin(username, password, verificationCode);
    if (validateResult != null) return validateResult;
    return RespVo.ok();

  }
}

这段代码展示了一个登录验证流程,分为验证器类 LoginValidator 和控制器类 LoginController

  1. LoginValidator 类:

    • 包含一个 validateLogin 方法,用于验证登录参数:username, password, verificationCode
    • 首先检查 username 是否为空,如果为空,则返回一个包含错误消息的 RespVo 对象。
    • 方法还可以进一步验证其他字段,如果所有验证都通过,则返回 null;如果任何验证不通过,则返回包含错误信息的 RespVo
  2. LoginController 类:

    • 通过 @RequestPath("/auth") 注解映射到 /auth 路径。
    • login 方法接收登录参数并使用 Aop.get(LoginValidator.class).validateLogin 调用验证器进行验证。
    • 如果验证结果非空(即有错误),方法返回这个验证结果;如果验证通过(验证结果为空),则返回 RespVo.ok() 表示登录成功。