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;
    }

时间: 2024-08-03 02:20:25

JavaWeb学习记录(六)——用户登录功能之Cookie的相关文章

mysql颠覆实战学习记录 :用户充值功能实现(一):当服务器卡顿7秒发生了什么 11

1.首先创建两个表,充值日志表(user_balance_log).用户余额表(user_balance) 表结构如下: (1)user_balance: (2)user_balance_log: 注:log_type 日志类型1代表充值 2代表消费 3代表转账 2.写存储过程模拟用户充值 BEGIN #Routine body goes here... declare t_error int default 0; declare usercount int default 0 ; declar

mysql颠覆实战学习记录 :用户充值功能实现(二):钱的安全性之表锁 12

表锁分为read和write read锁: lock table 表名 read; unlock tabls; #解锁 当前会话只能读取数据,不能插入数据. 其他会话能读取数据,不能插入数据,解锁后数据插入. write锁: lock table 表名 write; 当前会话可以读书数据,可以插入数据: 其他会话,不能读取数据,也不能插入数据:

JavaWeb学习记录(十五)——浏览器Cookie禁用后的处理

IE禁用Cookie方式: 例一: demo.do相关代码 public void doGet(HttpServletRequest request, HttpServletResponse response)            throws ServletException, IOException {        HttpSession session=request.getSession();        String jsessionid=session.getId();    

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

使用JDBC.spring框架.servlet实现一个简单的用户登录功能. 一.mySql数据库 SET FOREIGN_KEY_CHECKS=0; -- ------------------------------ Table structure for user-- ----------------------------DROP TABLE IF EXISTS `user`;CREATE TABLE `user` (  `id` int(11) NOT NULL AUTO_INCREMEN

[转]你会做Web上的用户登录功能吗?

转自:http://coolshell.cn/articles/5353.html Web上的用户登录功能应该是最基本的功能了,可是在我看过一些站点的用户登录功能后,我觉得很有必要写一篇文章教大家怎么来做用户登录功能.下面的文章告诉大家这个功能可能并没有你所想像的那么简单,这是一个关系到用户安全的功能,希望大家能从下面的文章中能知道什么样的方法才是一个好的用户登录功能.以下内容,转载时请保持原文一致,并请注明作者和出处. 用户名和口令 首先,我们先来说说用户名和口令的事.这并不是本站第一次谈论这

如何设计安全的用户登录功能

用户登录功能是Web应用系统具备的最基本的功能,关系到用户数据和应用系统数据的安全,设计一个安全的用户登录功能,涉及到以下几个方面的内容. (一) 老生常谈——口令 1. 口令长度与复杂度限制 限制用户输入一些非常容易被破解的口令,比如qwert.asdfg.123456.password之类的,参考twitter和 facebook的设计,为这样的口令做一个黑名单,不允许使用黑名单中的口令.同时,还对用户口令的长度.复杂度进行检查,要求用户设置足够长度,且复 杂度符合安全策略的口令. 在口令安

ASP.net中的AJAX学习记录六 无刷新的数据编辑(GridView和DetailsView结合实例)(转)

本篇博客是仿照书中实例,实现GridView和DetailsView结合无刷新的数据编辑效果,页面效果:当点击GridView1的行或换页时,都会引发DetailsView1的数据绑定显示至页面,同时当使用DetailsView1编辑.删除.添加时,也会引起GridView1的重新绑定,整体页面实现无刷新. 页面布局: 1.新建AJAX窗口,命名为:"NoRefreshEdit.aspx".要想实现页面无刷新编辑,就必须使用两个Updatepanel. 2.在NoRefreshEdit

使用 Flask 框架写用户登录功能的Demo时碰到的各种坑(三)——使用Flask-Login库实现登录功能

使用 Flask 框架写用户登录功能的Demo时碰到的各种坑(一)——创建应用 使用 Flask 框架写用户登录功能的Demo时碰到的各种坑(二)——使用蓝图功能进行模块化 本次示例的源码下载:点击下载 Flask-Login 库的中文文档:点击进入 Flask-Login 库的新版英文文档:点击进入 一.导入并初始化 Flask-Login 库 在项目根目录下的/demo/__init__.py 文件的头部,import 进 flask_login 库 from flask_login imp

实现Web上的用户登录功能

你会做Web上的用户登录功能吗? Web上的用户登录功能应该是最基本的功能了,可是在我看过一些站点的用户登录功能后,我觉得很有必要写一篇文章教大家怎么来做用户登录功能.下面 的文章告诉大家这个功能可能并没有你所想像的那么简单,这是一个关系到用户安全的功能,希望大家能从下面的文章中能知道什么样的方法才是一个好的用户登录 功能 用户名和口令 首先,我们先来说说用户名和口令的事.这并不是本站第一次谈论这个事了.如何管理自己的口令让你知道怎么管理自己的口令,破解你的口令让你知道在现代这样速度的计算速度下