• JavaWeb学习记录(六)——用户登录功能之Cookie


        private Cookie nameCookie=null;
        private Cookie passCookie=null;
        private Cookie cookieUser;
        private UserDao userDao=new UserDaoImpl();
        public void doGet(HttpServletRequest request, HttpServletResponse response)
                throws ServletException, IOException {
            createCookies(request);
            String value=request.getParameter("oper");
            //点击预登录按钮
            if("pre".equals(value)){
                String name=nameCookie.getValue();
                String pass=passCookie.getValue();
                //判断是否是初始化的值,如果不是存储到request域中
                if(!"1".equals(name)){
                    request.setAttribute("name", name);
                }
                if(!"1".equals(pass)){
                    request.setAttribute("pass", pass);
                }
                //跳转到登录界面
                request.getRequestDispatcher("/login.jsp").forward(request, response);
            }else if("login".equals(value)){//请求点击登陆按钮  ./login.do?oper=pre操作,获取cookie中的信息
                String name=request.getParameter("name");
                String pass=request.getParameter("pass");
                User user=new User();
                user=userDao.checkLogin(name, pass);
                //验证用户名和密码
                if(user!=null){
                    nameCookie.setValue(name);
                    passCookie.setValue(pass);
                    cookieUser=getCookie(request, "user");
                    if(cookieUser==null){
                        cookieUser=new Cookie("user","");
                    }
                    cookieUser.setValue(user.getId()+"");
                    response.addCookie(nameCookie);
                    response.addCookie(passCookie);
                    response.addCookie(cookieUser);
                    request.getRequestDispatcher("./goods_pay.jsp").forward(request, response);
                }else{
                    nameCookie.setValue(name);
                    passCookie.setValue("1");
                    response.addCookie(nameCookie);
                    response.addCookie(passCookie);
                    request.getRequestDispatcher("/login.do?oper=pre").forward(request, response);
                }
            }else if("delete".equals(value)){
                 cookieUser=getCookie(request, "user");
                 if(cookieUser!=null){
                     cookieUser=new Cookie("user", null);
                     cookieUser.setMaxAge(0);
                     response.addCookie(cookieUser);
                 }
                 request.getRequestDispatcher("/init.do").forward(request, response);
            }
        }
        //判断是否已经有了存储 用户名和密码的cookie对象
        private void createCookies(HttpServletRequest request) {
            Cookie[] cookies=request.getCookies();
            if(cookies!=null){
                for(Cookie ck:cookies){
                    //获取Cookie名称
                    String name=ck.getName();
                    if("name".equals(name)){
                        nameCookie=ck;
                    }else if("pass".equals(name)){
                        passCookie=ck;
                    }
                }
            }
            //如果request中没有cookie对象,创建要存储用户名的cookie对象
            if(nameCookie==null){
                nameCookie=new Cookie("name", "1");
            }
            if(passCookie==null){
                passCookie=new Cookie("pass", "1");
            }
        }

        public void doPost(HttpServletRequest request, HttpServletResponse response)
                throws ServletException, IOException {
            doGet(request, response);
        }

        private Cookie getCookie(HttpServletRequest request,String cookieName) {
            Cookie cookie = null;
            Cookie[] cookies = request.getCookies();
            if (cookies != null) {
                for (Cookie ck : cookies) {
                    String name = ck.getName();
                    if (cookieName.equals(name)) {
                        cookie = ck;
                    }
                }
            }
            return cookie;
        }

  • 相关阅读:
    Linux ifconfig 命令
    linux sed命令就是这么简单
    让博客园博客自动生成章节目录索引
    linux中cat、more、less命令区别详解
    Linux yum源搭建及配置
    关于java中位运算的左移、右移、无符号右移
    一个老话题,short s=s+1的日常
    C语言移位运算符
    关于异或的一些东西和应用
    指针就算指向了常量也不能修改这个常量
  • 原文地址:https://www.cnblogs.com/ly-radiata/p/4361875.html
Copyright © 2020-2023  润新知