注册
知识点
1.StringUtils.isBlank(xx) 判断xx是否为空 用来判断用户名 密码是否为空
if(StringUtils.isBlank(password)){
map.put( "msgpwd","密码不能为空" );
return map;
}
2.UUID:
user.setSalt(UUID.random().toString.substring(0, 5));// 取前5位
3.MD5 配合UUID 设置密码 详细在下面UTIL
user.setPassword(TouTiaoUtil.MD5(password+user.getSalt()));
4.生成随机头像 images里面的图片都是 0-9t.png 命名的、
String head= String.format( "http://images.nowcoder.com/head/%dt.png",new Random().nextInt(1000));
user.setHeadUrl(head);
Util 主要是MD5加密和json串 {" code":0," msg" :" xxxx"}
需要在pom.xml 导入
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.58</version>
</dependency>
package com.nowcoder.util;
import com.alibaba.fastjson.JSONObject;
import com.nowcoder.controller.LoginController;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.security.MessageDigest;
import java.util.Map;
/**
* Created by nowcoder on 2016/7/3.
*/
public class ToutiaoUtil {
private static final Logger logger = LoggerFactory.getLogger(ToutiaoUtil.class);
public static String getJSONString(int code) {
JSONObject json = new JSONObject();
json.put("code", code);
return json.toJSONString();
}
public static String getJSONString(int code, String msg) {
JSONObject json = new JSONObject();
json.put("code", code);
json.put("msg", msg);
return json.toJSONString();
}
public static String getJSONString(int code, Map<String, Object> map) {
JSONObject json = new JSONObject();
json.put("code", code);
for (Map.Entry<String, Object> entry : map.entrySet()) {
json.put(entry.getKey(), entry.getValue());
}
return json.toJSONString();
}
public static String MD5(String key) {
char hexDigits[] = {
'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F'
};
try {
byte[] btInput = key.getBytes();
// 获得MD5摘要算法的 MessageDigest 对象
MessageDigest mdInst = MessageDigest.getInstance("MD5");
// 使用指定的字节更新摘要
mdInst.update(btInput);
// 获得密文
byte[] md = mdInst.digest();
// 把密文转换成十六进制的字符串形式
int j = md.length;
char str[] = new char[j * 2];
int k = 0;
for (int i = 0; i < j; i++) {
byte byte0 = md[i];
str[k++] = hexDigits[byte0 >>> 4 & 0xf];
str[k++] = hexDigits[byte0 & 0xf];
}
return new String(str);
} catch (Exception e) {
logger.error("生成MD5失败", e);
return null;
}
}
}
代码:
1 Controller
LoginController 主要是用户的注册 登陆功能:
用一个rember 来标记是否记住用户 后面的Cookie ticket
import com.alibaba.fastjson.JSONObject;
import com.nowcoder.model.News;
import com.nowcoder.model.ViewObject;
import com.nowcoder.service.NewsService;
import com.nowcoder.service.UserService;
import com.nowcoder.util.ToutiaoUtil;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.*;
import sun.plugin2.message.CookieReplyMessage;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@Controller
public class LoginController {
private static final Logger logger = LoggerFactory.getLogger(LoginController.class);
@Autowired
UserService userService;
@RequestMapping(path = {"reg"}, method = {RequestMethod.GET, RequestMethod.POST})
@ResponseBody
public String reg(Model modelm, @RequestParam("username")String username,
@RequestParam("password")String password,
@RequestParam(value="rember",defaultValue = "0")int rember,
) {
try{
Map<String,Object> map = userService.register(username,password);
if(!map.isEmpty() ) //初始就是map不为空 说明记录了错误信息
return ToutiaoUtil.getJSONString(0,"注册成功");
}else{
return ToutiaoUtil.getJSONString(1,map);
}
}catch (Exception e){
logger.error("注册异常:"+e.getMessage());
return ToutiaoUtil.getJSONString(1,"注册异常");
}
}
2Userservice //注册
判断用户名,密码 是否为空,用户名是否已经注册 最后才是新用户的添加
public Map<String,Object> register(String username, String password){
Map<String,Object> map = new HashMap<>();
if (StringUtils.isBlank(username)) {
map.put("msgname", "用户名不能为空");
return map;
}
if (StringUtils.isBlank(password)) {
map.put("msgpwd", "密码不能为空");
return map;
}
User user = userDAO.selectByName(username);
if (user != null) {
map.put("msgname", "用户名已经被注册");
return map;
}
user = new User();
user.setName(username);
user.setSalt(UUID.randomUUID().toString().substring(0,5));
String head = String.format("http://images.nowcoder.com/head/%dt.png", new Random().nextInt(1000));
user.setHeadUrl(head);
user.setPassword(ToutiaoUtil.MD5(password+user.getSalt()));
userDAO.addUser(user);
return map;
}