发表于: 2019-08-29 23:20:14
1 600
今天完成的事情:
1.随机昵称
1.1 方式一
int hightPos,lowPos;//定义高低位
Random random = new Random();
// 高位176-215、低位161-254范围内的gbk字符才是汉字,这个范围之外的就不是汉字了
hightPos = (176+Math.abs(random.nextInt(39)));//获取数据的范围:[0,39) 包括0,不包括39
lowPos = (161+Math.abs(random.nextInt(93)));//获取低位值
System.out.println(random.nextInt(39));
byte[] b = new byte[2];//字节数组
b[0] = (new Integer(hightPos)).byteValue();
b[1] = (new Integer(lowPos)).byteValue();
try {
System.out.println(b[0]);
System.out.println(b[1]);
str = new String(b,"GBK");//转成中文
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
nickName += str;
主要使用new String({highPos,lowPos},"GBK"),生成中文字符
GBK中的中文字符是在:高位176-215、低位161-254范围内
采用Random.nextInt(n) 生成0~n之间的随机数
特点:代码简洁,真随机
1.2方式2
StringBuffer sb = new StringBuffer();
Random random = new Random();
Math.abs(random.nextInt(surNameLen));
if(simple){
sb.append(surName[random.nextInt(surNameLen)]);
int surLen = sb.toString().length();
for(int i=0;i< len - surLen;i++){
sb.append(lastName[random.nextInt(lastNameLen)]);
}
}else{
sb.append(doubleSurName[random.nextInt(doubleSurNameLen)]);
int surLen = sb.toString().length();
for (int i=0;i<len-surLen;i++){
sb.append(lastName[random.nextInt(lastNameLen)]);
}
}
其中surName,doubleSurName,lastName分别是单姓,复姓,名等汉字的数组,我们可以去配置相应的字段
原理就是在三个数组中取出相应的字符进行拼接
效果
2.UserController 用户注册时分配一个随机昵称
@PostMapping("/register")
public ResponseBo register(@RequestBody User user) throws Exception {
Random random = new Random();
int len = random.nextBoolean()? 2 : 3;
user.setName(NickName.getNickName(random.nextBoolean(),len));
user.setSynopsis(user.getName()+"的简介");
user.setCreateAt(System.currentTimeMillis());
userService.addUser(user);
ResponseBo responseBo = new ResponseBo();
responseBo.put("data",user);
return responseBo;
}
结果:
3.用户登录接口
3.1这里采用hashmap的形式接受json数据,@ResquestBody将前端传递过来的数据转成json格式
@PostMapping("/login")
public ResponseBo login(HttpSession session, @RequestBody HashMap<String,String> req) throws Exception {
User user = userService.getUserLogin(req.get("name"),req.get("password"));
if(user==null){
return ResponseBo.error("用户名或密码错误");
}else {
session.setAttribute("user",user);
return ResponseBo.ok("登录成功");
}
}
根据用户名和密码获取用户信息成功
3.2.根据session存储的用户获取个人信息
@GetMapping("/profile")
public ResponseBo profile(HttpSession session){
ResponseBo responseBo = ResponseBo.ok("获取个人信息成功");
User user = (User) session.getAttribute("user");
responseBo.put("user",user);
return responseBo;
}
3.3注销接口
@GetMapping("/profile")
public ResponseBo profile(HttpSession session){
ResponseBo responseBo = ResponseBo.ok("获取个人信息成功");
User user = (User) session.getAttribute("user");
responseBo.put("user",user);
return responseBo;
}
3.4根据区分登录时用户名错误还是密码错误
先查用户名,再查密码
@PostMapping("/login")
public ResponseBo login(HttpSession session, @RequestBody HashMap<String,String> req) throws Exception {
List<User> list = userService.getUserByName(req.get("name"));
if(list.size()>0){
User user = userService.getUserLogin(req.get("name"),req.get("password"));
if(user==null){
return ResponseBo.error("密码错误");
}else {
session.setAttribute("user",user);
return ResponseBo.ok("登录成功");
}
}else{
return ResponseBo.error("用户名错误");
}
}
完成用户注册登录接口
明天计划的事情:
1.作品分类列表
2.banner图
遇到的问题:
1.controller中的逻辑和service逻辑的界限是什么,感觉controller中的一部分代码可以写在service层中
暂无
收获:
评论