【叶神中级】四篇-注册

注册

在这里插入图片描述

知识点

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;
}

演示:

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值