用户管理之登录

目录

1.1前端事件

1.2验证码与非空检查

1.3用户名和密码数据库查询service

1.3用户名和密码数据库查询dao

 1.4退出操作

 1.5退出操作前端

1.6分类列表前端

1.7分类列表后端

1.8分类列表service

1.8分类列表dao


查看架构图与总览 

 

 实现

1.1前端事件



		$(function () {
			$("#login_btn").click(function () {
				$.post("User/login",$("#loginForm").serialize(),function (data) {
					if (data.flag) {
//如果后端判断成功,则跳转
						location.href = "index.html";
					}else {
						$("#errorMsg").html(data.errorMsg);
						$("#checkCode").attr("src","checkCode?"+new Date().getTime())
					}
				})
			})
		})

1.2验证码与非空检查

   /**
     * 登录
     * */
    public void login(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        UserService userService = new UserServiceImpl();
        //获取用户名非空判断
        String username = request.getParameter("username");
        //获取密码非空判断
        String password = request.getParameter("password");
        //获取验证码
        String check = request.getParameter("check");
        //封装表单查数据库
        Map<String, String[]> parameterMap = request.getParameterMap();

        User user = new User();
        try {
            BeanUtils.populate(user, parameterMap);
        } catch (IllegalAccessException e) {
            e.printStackTrace();
        } catch (InvocationTargetException e) {
            e.printStackTrace();
        }
        ResultInfo resultInfo = new ResultInfo();

        HttpSession session = request.getSession();
        String checkcode_server = (String) session.getAttribute("CHECKCODE_SERVER");
        //健壮性
        session.removeAttribute("CHECKCODE_SERVER");
        //验证码的判断
        if (checkcode_server == null || !checkcode_server.equalsIgnoreCase(check)) {
            resultInfo = new ResultInfo();
            resultInfo.setFlag(false);
            resultInfo.setErrorMsg("验证码错误!");
            /**
             * 未封装的方法
             * */
            /*ObjectMapper mapper = new ObjectMapper();*/
            /*mapper = new ObjectMapper();
            String json = mapper.writeValueAsString(resultInfo);
            response.setContentType("application/json;charset=utf-8");
            response.getWriter().write(json);*/
            /**
             * 封装后的方法
             * */
            writeValue(resultInfo,response);


        } else {
            //非空判断
            if ((password != null && !"".equals(password)) && (username != null && !"".equals(username))) {


                User result = userService.findUsernameAndPassword(user);




                //数据库查询
                if (result != null && "Y".equals(result.getStatus())) {
                    resultInfo.setFlag(true);
//设置全局变量
                    session.setAttribute("user",result);
                    System.out.println(result.toString());
                    /**
                     * 未封装的方法
                     * */
                    /*String successJson = mapper.writeValueAsString(resultInfo);
                    response.setContentType("application/json;charset=utf-8");
                    response.getWriter().write(successJson);
                    System.out.println(successJson + "---------------1");*/
                    /**
                     * 封装后的方法
                     * */
                    writeValue(resultInfo,response);

                }
                //验证码判断,
                if (result != null &&!"Y".equals(result.getStatus())) {
                    resultInfo.setFlag(false);
                    resultInfo.setErrorMsg("账户未激活!");
                    /**
                     * 未封装的方法
                     * */
                    /*response.setContentType("application/json;charset=utf-8");
                    String json = mapper.writeValueAsString(resultInfo);
                    response.getWriter().write(json);*/
                    /**
                     * 封装后的方法
                     * */
                    writeValue(resultInfo,response);
                }
                if (result == null) {
                    resultInfo.setFlag(false);
                    resultInfo.setErrorMsg("账户或密码错误,请检查!");
                    /**
                     * 未封装的方法
                     * */
                    /*String json = mapper.writeValueAsString(resultInfo);
                    response.setContentType("application/json;charset=utf-8");
                    response.getWriter().write(json);
                    System.out.println(json);
                    System.out.println(json + "------------------3");*/
                    /**
                     * 封装后的方法
                     * */
                    writeValue(resultInfo,response);
                }
            } else {
                resultInfo.setFlag(false);
                resultInfo.setErrorMsg("账户或密码为空,请检查!");
                /**
                 * 未封装的方法
                 * */
                /*String json = mapper.writeValueAsString(resultInfo);
                response.setContentType("application/json;charset=utf-8");
                response.getWriter().write(json);
                System.out.println(json);
                System.out.println("------------------4");*/
                /**
                 * 封装后的方法
                 * */
                writeValue(resultInfo,response);
            }
        }
    }

1.3用户名和密码数据库查询service

  @Override
    public User findUsernameAndPassword(User user) {
        User result = userDao.findUsernameAndPassword(user);
        return result;
    }
}

1.3用户名和密码数据库查询dao

 @Override
    public User findUsernameAndPassword(User user) {
        User result = null;
        try {
            String sql = " select * from tab_user where username = ? and password = ? ";
            result = jdbcTemplate.queryForObject(sql, new BeanPropertyRowMapper<User>(User.class), user.getUsername(),user.getPassword());
        } catch (DataAccessException e) {
        }
        return result;
    }
}

 1.4退出操作

/**
 * 退出方法
 * */
    public void exit(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        //删除所有session
        request.getSession().invalidate();
        //重定向到登录页面
        response.sendRedirect(request.getContextPath() + "/login.html");
    }

 1.5退出操作前端

  /**
     * 用户信息显示
     * */
    $(function () {
        //页面加载完隐藏用户信息界面
        $("#login_div").hide()
        //显示退出页面
        $("#login_out").show()
        $.get("User/findOne", {}, function (data) {
            //欢迎标语---》“欢迎回来,杨皓”
            var msg = "欢迎回来," + data.name
            $("#span_name").html(msg);
            //显示用户信息
            $("#login_div").show()
            //隐藏退出按钮
            $("#login_out").hide()
        })
    })

1.6分类列表前端

 /**
     * category显示
     * */
    $(function () {
        $.get("Category/findAll",{},function (data) {
            var lis = '<li class="nav-active"><a href="index.html">首页</a></li>'
            for (let i = 0; i < data.length; i++) {
               var li ='<li><a href="route_list.html?cid='+data[i].cid+'">'+data[i].cname+'</a></li>';
               lis += li;
            }
            lis += '<li><a href="favoriterank.html">收藏排行榜</a></li>';

            $("#category").append(lis);
        })
    })

1.7分类列表后端

/**
 * @ClassName CategoryServlet
 * @Description 分类列表
 * @Author Yanghao2
 * @Date 2021/11/24 10:19
 * @Version V1.0
 */
@WebServlet("/Category/*")
public class CategoryServlet extends BaseServlet{
    private CategoryService categoryService = new CategoryServiceImpl();

    public void findAll(HttpServletRequest request, HttpServletResponse response) throws IOException {
        //调dao
        List<Category> all = categoryService.findAll();
        //写回前端
        writeValue(all,response);
    }

}

1.8分类列表service

/**
 * @ClassName CategoryServiceImpl
 * @Description
 * @Author Yanghao2
 * @Date 2021/11/24 10:32
 * @Version V1.0
 */

public class CategoryServiceImpl implements CategoryService {
    CategoryDao dao = new CategoryDaoImpl();

    /**
     * 从缓存查数据
     * */
    @Override
    public List<Category> findAll() {
        /*List<Category> categories = dao.findAll();*/
        //获取jedis对象
        Jedis jedis = JedisUtil.getJedis();
        //查缓存内key为category的所有数据,如果有数据更新,zrange就会出现数据查询重复和遗漏的情况。而zrangeWithScore却由于符合条件则全部查询出来的特性,而不会出现重复和遗漏。
        /*Set<String> categoryS = jedis.zrange("category", 0, -1);*/
        Set<Tuple> categoryS = jedis.zrangeWithScores("category", 0, -1);
        List<Category> cs = null;
        if (categoryS == null || categoryS.size() == 0) {
            //如果缓存为空则查数据库
            cs = dao.findAll();
            //遍历查询出来的数据
            for (int i = 0; i < cs.size(); i++) {
                //将数据按照数据库内的主键排序,对相关业务员较友好
                jedis.zadd("category",cs.get(i).getCid(),cs.get(i).getCname());
                System.out.println("从数据查询");
            }
        }else {
            //如果缓存有数据则取缓存的数据
            cs = new ArrayList<Category>();
            //遍历缓存内的数据
            for (Tuple tuple : categoryS) {
                //获取category实体类对象
                Category category = new Category();
                //设置cname
                category.setCname(tuple.getElement());
                //设置cid
                category.setCid((int) tuple.getScore()) ;
                //将实体类存入一个列表,返回值要求是一个集合,以保证可以返回
                cs.add(category);
            }
            System.out.println("从缓存查询");
        }
        //返回集合
        return cs;
    }
}

1.8分类列表dao

/**
 * @ClassName CategoryImpl
 * @Description
 * @Author Yanghao2
 * @Date 2021/11/24 10:28
 * @Version V1.0
 */

public class CategoryDaoImpl implements CategoryDao {
    JdbcTemplate template = new JdbcTemplate(JDBCUtils.getDataSource());
    @Override
    public List<Category> findAll() {
        String sql = "select * from tab_category";
        List<Category> categories = template.query(sql, new BeanPropertyRowMapper<Category>(Category.class));
        return categories;
    }
}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值