参数校验
为了实现高性能推荐在 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
。
LoginValidator
类:- 包含一个
validateLogin
方法,用于验证登录参数:username
,password
,verificationCode
。 - 首先检查
username
是否为空,如果为空,则返回一个包含错误消息的RespVo
对象。 - 方法还可以进一步验证其他字段,如果所有验证都通过,则返回
null
;如果任何验证不通过,则返回包含错误信息的RespVo
。
- 包含一个
LoginController
类:- 通过
@RequestPath("/auth")
注解映射到/auth
路径。 login
方法接收登录参数并使用Aop.get(LoginValidator.class).validateLogin
调用验证器进行验证。- 如果验证结果非空(即有错误),方法返回这个验证结果;如果验证通过(验证结果为空),则返回
RespVo.ok()
表示登录成功。
- 通过