登陆、注册 ,分析与代码

在这里插入图片描述
在这里插入图片描述

登陆服务模块
基本思路,登陆→登陆数据→登陆数据查询→TRUE/FALSE(去注册)。
JSP中对于对象的设置:

<p>Username:<input id="username" name="username" value="${cookie.username.value}" type="text"></p>
<p>Password:<input id="password" name="password" value="${cookie.password.value}" type="password"></p>
<p>Remember:<input id="remember" name="remember" value="1" type="checkbox"></p>

在对应的servlet中接受数据:

 //1. 获取用户名和密码
        String username = request.getParameter("username");
        String password = request.getParameter("password");
        //获取复选框数据 是否记住密码
        String remember = request.getParameter("remember");
        //2. 调用service查询
        User user = service.login(username, password);

查询语句放在对应的Mapper中:

@Select("select * from tb_user where username = #{username} and password = #{password}")
    User select(@Param("username") String username,@Param("password")  String password);

@Select("select * from tb_user where username = #{username}")
    User selectByUsername(String username);
   
@Insert("insert into tb_user values(null,#{username},#{password})")
    void add(User user);

数据库操作放在对应的servlet类中:

public User login(String username,String password){
        //2. 获取SqlSession
        SqlSession sqlSession = factory.openSession();
        //3. 获取UserMapper
        UserMapper mapper = sqlSession.getMapper(UserMapper.class);
        //4. 调用方法 数据库操作
        User user = mapper.select(username, password);
        //释放资源
        sqlSession.close();
        return  user;
    }
    //User为已经封装的User类,为用户注册使用
public boolean register(User user){
        //2. 获取SqlSession
        SqlSession sqlSession = factory.openSession();
        //3. 获取UserMapper
        UserMapper mapper = sqlSession.getMapper(UserMapper.class);
        //4. 判断用户名是否存在
        User u = mapper.selectByUsername(user.getUsername());
        if(u == null){
            // 用户名不存在,注册
            mapper.add(user);
            sqlSession.commit();
        }
        sqlSession.close();
        return u == null;
    }

记住用户名、密码操作通过按钮判断,如果点击将数据存放在cookie中,下次登陆时从cookie中使用:

//判断用户是否勾选记住我
if("1".equals(remember)){
        //勾选了,发送Cookie
        //1. 创建Cookie对象
        Cookie c_username = new Cookie("username",username);
        Cookie c_password = new Cookie("password",password);
        // 设置Cookie的存活时间
        c_username.setMaxAge( 60 * 60 * 24 * 7);
        c_password.setMaxAge( 60 * 60 * 24 * 7);
        //2. 发送
        response.addCookie(c_username);
        response.addCookie(c_password);
    }
    //将登陆成功后的user对象,存储到session
    HttpSession session = request.getSession();
    session.setAttribute("user",user);

登陆失败,停留在登陆界面:

// 存储错误信息到request
  request.setAttribute("login_msg","用户名或密码错误");
  // 跳转到login.jsp
 request.getRequestDispatcher("/login.jsp").forward(request,response);

前往注册在JSP中设置,设置连接跳转设置:

<a href="register.jsp">没有账号?</a>

注册服务模块
有了登陆模块的分析,注册就相对十分清晰了,注册→ture(去登陆)/false(继续注册)。
同样注册界面获取User数据:

	//1. 获取用户名和密码数据
        String username = request.getParameter("username");
        String password = request.getParameter("password");
        // 获取用户输入的验证码
        String checkCode = request.getParameter("checkCode");
        //对象封装
        User user = new User();
        user.setUsername(username);
        user.setPassword(password);			

与数据库信息对比,看信息是否已经存在:

   //2. 调用service 注册
        boolean flag = service.register(user);
        //3. 判断注册成功与否
        if(flag){
            //注册功能,跳转登陆页面
            request.setAttribute("register_msg","注册成功,请登录");
            request.getRequestDispatcher("/login.jsp").forward(request,response);
        }else {
            //注册失败,跳转到注册页面
			request.setAttribute("register_msg","用户名已存在");
			request.getRequestDispatcher("/register.jsp").forward(request,response);
        }
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值