web后端注册功能实现(MD5加密)

web后端注册功能实现

一、注册功能思路

  • 首先验证验证码是否正确
    • 验证码不正确:重定向回到register.jsp
    • 验证码正确
      • 查询用户名/手机号是否存在
        • 存在,重定向回到register.jsp
        • 不存在,完成注册功能并跳转到login.jsp

二、代码实现

前端页面部分代码

<form action="${pageContext.request.contextPath}/user/register" method="post">
						<table cellpadding="0" cellspacing="0" border="0"
							class="form_table">
							<tr>
								<td valign="middle" align="right">
									用户名:
								</td>
								<td valign="middle" align="left">
									<input type="text" class="inputgri" name="username" />
								</td>
							</tr>
							<tr>
								<td valign="middle" align="right">
									真实姓名:
								</td>
								<td valign="middle" align="left">
									<input type="text" class="inputgri" name="realname" />
								</td>
							</tr>
							<tr>
								<td valign="middle" align="right">
									密码:
								</td>
								<td valign="middle" align="left">
									<input type="password" class="inputgri" name="password" />
								</td>
							</tr>
							<tr>
								<td valign="middle" align="right">
									性别:
								</td>
								<td valign="middle" align="left"><input type="radio" class="inputgri" name="gender" value="1" checked="checked"/><input type="radio" class="inputgri" name="gender" value="0"/>
								</td>
							</tr>
							
							<tr>
								<td valign="middle" align="right">
									验证码:
									<img id="num" src="${pageContext.request.contextPath}/user/generateImageCode" />
									<a href="javascript:;" onclick="document.getElementById('num').src = '${pageContext.request.contextPath}/user/generateImageCode?'+(new Date()).getTime()">换一张</a>
								</td>
								<td valign="middle" align="left">
									<input type="text" class="inputgri" name="code" />
								</td>
							</tr>
						</table>
						<p>
							<input type="submit" class="button" value="Submit &raquo;" />
							<input type="button" class="button" onclick="location.href='${pageContext.request.contextPath}/login.jsp'" value="Login &raquo;" />
						</p>
					</form>

请求的路径${pageContext.request.contextPath}代表的是项目的根目录 通俗易懂就是main文件夹下一级的目录,其中包括java、resource、webapp文件夹等

Controller层

/**
    * @Author: yzh
    * @Description: 用户注册功能实现
    * @Param: [user, code, session]
    * @return: java.lang.String
    * @Date: 2021/8/12
    */
    @RequestMapping("register")
    public String register(User user, String code,HttpSession session) throws UnsupportedEncodingException {
        log.debug("接收到验证码: {}",code);
        log.debug("用户名:{}, 真实姓名:{}, 密码:{}, 性别:{}",user.getUsername(),user.getRealname(),user.getPassword(),user.getGender());

        try {
            //1.比较验证是否一致
            String sessionCode = session.getAttribute("code").toString();
            if (!sessionCode.equalsIgnoreCase(code)) throw new RuntimeException("验证码输入错误!");
            //2.注册用户
            userService.register(user);
        } catch (RuntimeException e) {
            e.printStackTrace();
            return "redirect:/regist.jsp?msg="+ URLEncoder.encode(e.getMessage(),"UTF-8");
        }
        return "redirect:/login.jsp";
    }

Service层

/**
    * @Author: yzh
    * @Description: 用户注册功能实现
    * @Param: [user]
    * @return: void
    * @Date: 2021/8/12
    */  
    @Override
    public void register(User user) {
        //1.根据用户查询数据库是否存在改用户名
        User userDB = userDao.findByUserName(user.getUsername());
        //使用Springboot工具类判断user是否为空
        if (!ObjectUtils.isEmpty(userDB)) throw new RuntimeException("用户名已存在!");
        //2.//使用Springboot工具类进行注册之前给明文加密
        String passwordSecret = DigestUtils.md5DigestAsHex(user.getPassword().getBytes(StandardCharsets.UTF_8));
        user.setPassword(passwordSecret);
        userDao.save(user);
    }

DAO层(Mapper.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="此处一定要绑定对的接口">

    <!--根据用户名查询用户-->
    <select id="findByUserName" parameterType="String" resultType="User">
        select id,username,realname,password,gender from `user`
        where username = #{username}
    </select>

    <!--注册用户-->
    <insert id="save" parameterType="User" useGeneratedKeys="true" keyProperty="id">
        insert into `user` values(#{id},#{username},#{realname},#{password},#{gender})
    </insert>

</mapper>

前端接收后端返回msg信息并使用

					<h1>
						注册 ---> ${param.msg}
					</h1>

由于是通过重定向携带返回信息,所以信息会显示在地址栏中 通过 ${param.msg}即可获取到后端返回的信息

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值