迷你旅游网——用户登录与退出(完成登录后回显信息......)

1.逻辑分析
1)校验验证码
2)根据用户名和密码获取用户信息
3)封装数据
4)调用service查询数据库
5)根据用户名和密码判断该用户是否存在
6)判断用户是否激活
7)判断用户登录成功与否
8)响应数据到客户端
9)用户退出,消除session

2.代码实现
2.1 servlet层代码
1)login() 用户登录;

		//1.校验验证码,此处封装为一个验证码校验的方法,直接调用
        checkCode(request, response);
        //2.根据用户名和密码获取用户信息
        Map<String, String[]> map = request.getParameterMap();
        //3.封装数据
        User user = new User();
        BeanUtils.populate(user, map);
        //4.调用service完成查询
        User u = service.login(user);
        ResultInfo info = new ResultInfo();
        //5.u是否存在
        if (u == null) {
            //用户不存在
            info.setFlag(false);
            info.setErrorMsg("用户名或密码错误!");
        }
        //6.用户是否激活
        else if (!"Y".equals(u.getStatus())) {
            //用户未激活
            info.setFlag(false);
            info.setErrorMsg("该用户尚未激活!");
        }
         //7.判断登录成功
        else if ("Y".equals(u.getStatus())) {
            //登录成功
            info.setFlag(true);
            request.getSession().setAttribute("user", u);   //设置session,用作之后在页面上回显用户姓名
        }
        //8.响应数据
        writeValue(info, response);     //此处封装一个序列化json并响应到客户端的方法
        

2)findOne()异步查询,回显用户姓名;

		//1.从session中获取登录用户
        Object user = request.getSession().getAttribute("user");
        //2.将user写回客户端
        writeValue(user, response);

3)exit()用户退出;

 		//销毁session
        request.getSession().invalidate();	//此处关键
        //跳转到登录页面
        response.sendRedirect(request.getContextPath() + "/login.html");	//重定向到登录页面

2.2 service层代码
1)login()返回用户user;

return userDao.findByUsernameAndPassword(user.getUsername(),user.getPassword());

2.3 dao层代码
1)findByUsernameAndPassword()根据用户名和密码查询;

 		User user = null;
        try {
            //1.定义sql
            String sql = "select * from tab_user where username = ? and password = ? ";
            //2.执行sql
            user = template.queryForObject(sql, new BeanPropertyRowMapper<User>(User.class), username,password);
        } catch (Exception e) {
        }
        return user;
        

2.4 web层代码
1)header.html中用js完成Ajax发送,返回用户名;

<script>
    $(function () {
 		 //发送ajax请求,返回用户名
        $.get("user/findOne",{},function (data) {
            //返回user信息
            var msg = "欢迎回来,"+data.name;
           $("#span_username").html(msg);
        });
    }
</script>

3.个人心得
//关于异步请求,发送ajax请求;
例: $.get(“user/findOne”,{},function (data) {});
1){}:客户端请求的参数;
2)“user/findOne”:访问服务器的URL;
3)function (data):回调函数,data:响应到客户端的数据;

4.后续完成UserServlet优化
//TODO…

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值