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

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

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

		//1.校验验证码,此处封装为一个验证码校验的方法,直接调用
        checkCode(request, response);
        //2.根据用户名和密码获取用户信息
        Map 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.class), username,password);
        } catch (Exception e) {
        }
        return user;
        

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



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

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

你可能感兴趣的:(JAVA_WEB,JAVA学习积累)