Springboot基本结构——登录 控制层
一般来说在控制层,我们要:
1.处理异常;
2.设计请求;
3.处理请求。
首先看第一个,诶,为什么在注册的时候没有处理异常?其实也处理了:
还记得吗,这是我们控制层的基类,在这里面就有对异常的统一处理。
现在我们继续添加:
1 public class BaseController { 2 //操作成功的状态码 3 public static final int OK = 200; 4 5 //请求处理方法,这个函数的返回值就是需要传递到前端的数据 6 //自动将异常对象传递到此方法的参数列表上 7 @ExceptionHandler(ServiceException.class) //统一处理抛出的异常 8 public JsonResult<Void> handleException(Throwable e) { 9 JsonResult<Void> result = new JsonResult<>(e); 10 if (e instanceof UsernameDuplicatedException) { 11 result.setState(4000); 12 result.setMessage("用户名已经被占用"); 13 } else if (e instanceof InsertException) { 14 result.setState(5000); 15 result.setMessage("注册时产生未知的异常"); 16 } else if (e instanceof UserNotFoundException) { 17 result.setState(5001); 18 result.setMessage("产生找不到用户的异常"); 19 } else if (e instanceof PasswordNotMatchException) { 20 result.setState(5002); 21 result.setMessage("产生用户名密码错误的异常"); 22 } 23 return result; 24 } 25 }
好,这一部分做完后现在我们要设计请求了:
主要按照这个逻辑去设计就可以了。
好,现在处理请求:
在哪里编写login方法?是不是UserController这个类里面?对的。
这一部分的编写也是非常简单,直接依葫芦画瓢,注册怎么写的这里登录就怎么写,调用业务层的login方法就好了。
1 @RequestMapping("login") 2 public JsonResult<User> login(@RequestBody String username, String password) { 3 userService.login(username, password); 4 return new JsonResult<>(OK); 5 }
最后在浏览器端测试一下就完了,比如:
localhost:8080/users/login?username= &password=这样的格式。