zoukankan      html  css  js  c++  java
  • 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;
        }

  • 相关阅读:
    关于Javascript的有趣的3个小知识
    linux支持串口(serial)登录配置方法
    Silicom Linux BypassSD Control Utilitybypass command
    USB隨身碟版的Clonezilla live
    如何將Clonezilla live放到一個已經有其他作業系統存在的硬碟中
    clonezilla for usb as ghost or backup,auto ghost,auto backup(再生龙一键还原(备份)的制作)
    典型PC机上各种操作的近似时间
    linux网络问题子网掩码与网关不在同一段的处理
    Linux family member.(AS/ES/WS)
    华为交换机常用命令
  • 原文地址:https://www.cnblogs.com/ly-radiata/p/4361875.html
Copyright © 2011-2022 走看看