用户登录功能主要包含了验证用户是否存在,用户密码是否正确,以及将当前用户信息记录在session里。
1.首先创建UserController,在controller里添加登录接口,传递参数username, password, session。添加@RequestMapping注解,设置属性value为请求的地址,method设置请求类型为POST;添加@RequestBody注解,将返回值自动将返回值序列化为json。
2.在service包下创建IUserService接口,声明login方法,传入username, password。
3.创建UserServiceImpl来实现IUserService接口。
4.在common包下创建通用的响应对象ServerResponse实现序列化接口Serializable。在类前添加@JsonSerialize注解,设置include为NOT_NULL这样在生成的json文件里不包含值为null的对象。
在common包下创建Const常量类,使用final String声明当前用户CURRENT_USER。
响应对象里有三个属性status(int), msg(String), data(T),其中data为泛型,可以用来封装不同的数据类型。
创建私有的构造方法。
创建对外开放的方法isSuccess, getStatus, getData, getMsg。在isSuccess前添加@JsonIgnore注解,使得这个字段在序列化之后不会显示在json里。
创建开放的静态方法,
createBySuccess/createByError将不同情况下的响应对象返回回去。
5.在common包下创建枚举类ResponseCode,定义不同的返回类型SUCCESS,ERROR,NEED_LOGIN, ILLEGAL_ARGUMENT。创建私有构造方法,将code和desc通过public的get方法开放出去。
6.回到UserServiceImpl里,使用@Autowired注解来注入UserMapper bean。
7.在UserMapper里添加验证用户名的方法checkUsername,验证用户名和密码是否正确的方法selectLogin,在selectLogin方法里使用@Param注解传递username, password。在对应的xml文件里添加对应的select节点及sql语句。
8.在UserServiceImpl里调用UserMapper里的checkUsername和selectLogin方法来检查用户名和密码是否正确并返回响应对象。使用@Service注解,将UserServiceImpl声明为一个service,设置ID为iUserService。
9.在UserController里使用@Autowired注入iUserService,调用iUserService里的login方法,如果成功的话,使用Const类里的CURRENT_USER作为key,将响应对象里的data作为value放入session,最后返回response。
用户登录接口到这里就完成了。



