登陆注册

登陆注册功能的实现

自动登录、是否保留用户密码、数据回显

1.准备登录表单用于填写用户登录信息

jsp文件中:

  • 隐藏输入框传值 、web中dom使用、事件绑定、jsp EL表达式的常规使用
<form action="user3">
	<%--隐藏输入框--%>
    <input type="hidden" name="method" value="login2">
    <input type="text" name="username" value="${username} placeholder="请输入用户名"><br>
    <input type="password" name="password" placeholder="请输入密码">
    <input type="checkbox" name="saveuser" user="1">保存一周 <br>
    <button> 登录</button>
</form>
<script>
   // 获取表单控件中name为username元素,自动登录的实现是仅需输入用户账号
   document.forms[0].username.addEventListener('blur',function(){
    	//获取输入的用户名
        var username = this.value;
		//请求后端的checkCookie方法
        location.href="user3?method=checkCookie&username="+username;
    })
</script>

2.编写Servlet类:

  • 封装类BaseServlet的使用、会话跟踪技术、请求转发与重定向的使用
import com.alibaba.fastjson.JSON;
import com.softeem.entity.User;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.*;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.net.URLDecoder;
import java.net.URLEncoder;
import java.util.Objects;

@WebServlet("/user3")
public class UserServlet3 extends BaseServlet {
    
    public void login2(HttpServletRequest request,HttpServletResponse response) throws IOException {
        //获取用户名
        String username = request.getParameter("username");
        //获取用户密码
        String password = request.getParameter("password");
        
        if("admin".equals(username) && "123456".equals(password)){
            //登录成功,查看是否勾选保存密码
            String s = request.getParameter("saveuser");
            //根据获取到的用户信息创建用户对象
            User user = new User();
            user.setUsername(username);
            user.setPassword(password);
             //勾选了保存密码选项
            if(s != null){
                //将用户对象转换为json数据
                String json = JSON.toJSONString(user);
                //json数据编码方式为utf-8
                json = URLEncoder.encode(json, "utf-8");
                //将用户信息存到Cookie作用域中
                Cookie c1 = new Cookie("username", json);
                response.addCookie(c1);
            }
            //未勾选保存密码选项,直接到成功登录的下一页面
            response.sendRedirect("index.jsp");
        }else{
            //登录未成功,返回登陆页面重新登陆(刷新)
            response.sendRedirect("login.html");
        }
    }
    
	/**
     * 检查cookie保存的数据信息
     * @param request
     * @param response
     * @throws IOException
     * @throws ServletException
     */
    public void checkCookie(HttpServletRequest request,HttpServletResponse response) throws IOException, ServletException {
		//获取请求的用户名,对应jsp文件中javascript中的请求
        String username = request.getParameter("username");
        //准备接收数据的容器
        String json = null;
        //获取客户端的cookie
        Cookie[] cookies = request.getCookies();
        for(Cookie c:cookies){
            //判断当前读取到的cookie键是否是user
            if(Objects.equals(c.getName(),"user")){
                //获取对应值
                json = c.getValue();
                break;
            }
        }
        if(json != null){
            //解码cookie的值
            json = URLDecoder.decode(json,"utf-8");
            //将json中的用户对象存储到session中
            User user = JSON.parseObject(json,User.class);
            //如果客户端输入的用户名恰好是cookie中存储的用户,则将用户信息存入session
            if(username.equals(user.getUsername())){
                
 			 //将cookie中的用户对象存储到session中
             request.getSession().setAttribute("user",user);
                //直接自动登陆
                response.sendRedirect("index.jsp");
                return;
            }
        }
        //将用户名存储到request范围(数据回显)
        request.setAttribute("username",username);
        //返回登陆界面,并将请求数据传递过去
        request.getRequestDispatcher("login.jsp").forward(request,response);
    }
}

用户注册验证结果(简单格式验证)

  • 隐藏框传值、dom使用、事件绑定

  • 通过改变输入框的className属性值,对应不同类选择器呈现不同样式

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <meta charset="UTF-8">
    <title>用户注册</title>
    <style>
        input{
            margin: 10px;
            padding: 0 10px;
            width: 350px;
            height: 40px;
            border: 1px solid rgba(0,0,0,0.2);
            border-radius: 5px;
        }
        .err{
            border-color: rgba(255,0,0,0.8);
        }
        .ok{
            border-color: rgba(0,255,0,0.5);
        }
    </style>
</head>
<body>
    <h1>用户注册</h1>
    <form id="f">
        <input type="hidden" name="method" value="register">
        <input type="text" name="username" placeholder="请输入用户名"><br>
        <input type="password" name="password" placeholder="请输入密码"><br>
        <input type="password" name="repass" placeholder="请重复输入"><br>
        <input type="number" name="age" placeholder="请输入年龄"><br>
        <input type="button" id="btnReg" value="注册">
    </form>

    <script>
        document.getElementById('btnReg').addEventListener('click',function(){
            var form = document.getElementById('f');
            var uname = form.username.value;
            var pwd = form.password.value;
            var repass = form.repass.value;
            var age = form.age.value;

            if(uname.length<1){
                form.username.className='err';
                return;
            }else{
                form.username.className='ok';
            }
            if(pwd.length<1){
                form.password.className='err';
                return;
            }else{
                form.password.className='ok';
            }
            if(repass.length<1){
                form.repass.className='err';
                return;
            }else{
                if(repass != pwd){
                    form.repass.className='err';
                }else{
                    form.repass.className='ok';
                }
            }
            if(age.length<1){
                form.age.className='err';
                return;
            }else{
                form.age.className='ok';
            }
            form.action='user';
            form.submit();
        })
    </script>
</body>
</html>

前端手机号格式验证

  • Javascript、事件绑定、正则表达式
<body>
    <input type="text" id="phone" placeholder="请输入手机号">
    <button onclick="check()">验证</button>
    <script>
        function check(){
            var input = document.getElementById('phone');
            //获取输入框值
            var phone = input.value;
            //正则表达式
            var regex = /^1[345789]\d{9}$/;
            if(regex.test(phone)){
                alert('手机格式正确');
            }else{
                alert('格式不正确');
            }
        }
    </script>
</body>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值