目录
核心注册功能实现
UserController.java
package com.itheima.travel.controller;
import com.itheima.travel.pojo.User;
import com.itheima.travel.service.UserService;
import com.itheima.travel.vo.ResultInfo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.io.IOException;
/**
* 定义用户的处理器类
*/
@Controller
@RequestMapping("/user")
public class UserController {
@Autowired
private UserService userService;
/**
* 定义注册的功能
* @param user 用户信息
* @param checkCode 验证码
* @param session 当前回话对象
* @return
*/
@PostMapping("/register")
@ResponseBody
public ResultInfo userRegister(User user, @RequestParam("check") String checkCode, HttpSession session){
//1.获取验证码
String sessionCheckCode = (String) session.getAttribute("CHECK_CODER");
return this.userService.registerUser(user,checkCode,sessionCheckCode);
}
}
UserServiceImpl.java
package com.itheima.travel.service.impl;
import com.itheima.travel.dao.UserDao;
import com.itheima.travel.pojo.User;
import com.itheima.travel.service.UserService;
import com.itheima.travel.utils.MailUtil;
import com.itheima.travel.utils.Md5Util;
import com.itheima.travel.utils.UuidUtil;
import com.itheima.travel.vo.ResultInfo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.StringUtils;
import org.springframework.web.context.request.RequestAttributes;
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.io.IOException;
@Service("userService")
@Transactional(propagation = Propagation.SUPPORTS,readOnly = true)
public class UserServiceImpl implements UserService {
@Autowired
private UserDao userDao;
@Override
@Transactional(propagation = Propagation.REQUIRED,readOnly = false)
public ResultInfo registerUser(User user, String checkCode, String sessionCheckCode) {
//1.校验验证码
if (sessionCheckCode==null|| !sessionCheckCode.equalsIgnoreCase(checkCode)) {
return new ResultInfo(false,null,"验证码错误");
}
//2.判断用户信息是否合法
if (StringUtils.isEmpty(user.getUsername())|| StringUtils.isEmpty(user.getPassword())) {
return new ResultInfo(false,null,"用户名或者密码不为空");
}
//3.校验当前用户名称是否被注册
User dbUser= this.userDao.findUserByUserName(user.getUsername());
if (dbUser!=null){
return new ResultInfo(false,null,"当前用户已被注册");
}
//4.生成激活码
String activeCode = UuidUtil.getUuid();
user.setCode(activeCode);
//5.插入用户信息
user.setStatus("N");
user.setPassword(Md5Util.encodeByMd5(user.getPassword()));
Integer count= this.userDao.insertUser(user);
if (count<1) {
return new ResultInfo(false,null,"用户注册失败");
}
//6.邮箱发送激活信息
String mailContent="<a href='http://localhost:8080/user/active?activeCode="+user.getCode()+"'>点击激活账户</a>";
MailUtil.sendMail(user.getEmail(),mailContent);
return new ResultInfo(true,null,null);
}
}
UserDao.java
package com.itheima.travel.dao;
import com.itheima.travel.pojo.User;
import org.apache.ibatis.annotations.Param;
/**
* 定义操纵用户信息的mapper接口
*/
public interface UserDao {
/**
* 根据用户名查询用户信息
* @param username
* @return
*/
User findUserByUserName(@Param("name") String username);
/**
* 插入用户信息
* @param user
* @return
*/
Integer insertUser(User user);
}
UserDao.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.itheima.travel.dao.UserDao">
<select id="findUserByUserName" resultType="com.itheima.travel.pojo.User">
select * from tab_user where username=#{name}
</select>
<insert id="insertUser">
insert into tab_user values(null,#{username},#{password},#{name},#{birthday},#{sex},#{telephone},#{email},
#{status},#{code})
</insert>
</mapper>