六、JSP——Cookie

来源:互联网 发布:linux 大文件中查找 编辑:程序博客网 时间:2024/06/05 09:07

      • Cookie
        • 保存用户状态的机制
        • Cookie介绍
        • 应用
      • 一cookie的创建与使用
        • 创建cookie步骤
        • 获取cookie
        • 常用方法
      • 二使用cookie实现登入记录的例子
      • 三session和cookie对比

保存用户状态的机制

  • session
  • cookie

Cookie介绍:

称为“小甜饼”,是Web服务器中保存在客户端的一系列文本信息

应用:

  • 典型应用1:判断注册用户是否已经登入网站
  • 典型应用2:“购物车”的处理
    作用:
    1.对特定对象的追踪
    2.保存用户网页浏览记录与习惯
    3.简化登入
    风险:容易泄漏用户信息

一、cookie的创建与使用

创建cookie步骤

  • 创建Cookie对象:Cookie newCookie=new Cookie(String key,Object value);

  • 写入Cookie对象:response.addCookie(newCookie);

  • 读取Cookie对象:Cookie[ ] cookies=request.getCookie( );

获取cookie

通过request.getCookies()方法获取cookie的内容,cookie的内容是数组

<!--获取cookie-->Cookie[] cookies = request.getCookies();<!--循环遍历输出cookies-->for(Cookie c:cookies){   system.out.println(c.getName()+" ,"+c.getValue());}

常用方法

setMaxAge(int expiry);//设置Cookie有效时间,以秒为单位getMaxAge();//获取cookie的有效时间,以秒为单位setValue(String value);//在cookie创建后,对cookie进行赋值getValue();//获取cookie的值getName();//获取cookie的名称

二、使用cookie实现登入记录的例子

这里写图片描述
1.创建login.jsp

<%@ page language="java" import="java.util.*,java.net.*" pageEncoding="UTF-8"%><body>//登入勾选cookie后将用户名和密码保留在登入框中 <%    String username="";    String password="";     Cookie[] cookies = request.getCookies();        if (cookies != null && cookies.length > 0) {            for (Cookie c : cookies) {                if (c.getName().equals("username")) {                        username=URLDecoder.decode(c.getValue(), "utf-8");                    }                if(c.getName().equals("password")){                         password=URLDecoder.decode(c.getValue(), "utf-8");                    }                }            }    %>    <form action="dologin.jsp" method="post">        用户:<input type="text" name="username" value="<%=username %>">            <br>            密码:<input type="password" name="password" value="<%=password %>">            <br>            <br>            <input type="checkbox" checked="checked" name="usecookie">十天内记住我的登录状态            <br>            <input type="submit" value="登入">    </form></body>

2.创建dologin.jsp

<body>    <%request.setCharacterEncoding("utf-8"); %>    <%    String[] cookie = request.getParameterValues("usecookie");            if (cookie != null && cookie.length>0) {                //获取表单用户名和密码,URLEcoder编码cookie的中文字符串为UTF-8                String username = URLEncoder.encode(request.getParameter("username"),"utf-8");                String password = URLEncoder.encode(request.getParameter("password"),"utf-8");                //将信息保存在cookie中                Cookie usernameCookie = new Cookie("username", username);                Cookie passwordCookie = new Cookie("password", password);                //设置Cookie的有效时间                usernameCookie.setMaxAge(864000);                passwordCookie.setMaxAge(864000);                response.addCookie(usernameCookie);                response.addCookie(passwordCookie);            } else {                //获取cookie的内容                Cookie[] cookies = request.getCookies();                if (cookies != null && cookies.length > 0) {                    //循环遍历查找cookie中的username和password                    for (Cookie c : cookies) {                        //如果c.getName()获取cookie的名称和username                        if (c.getName().equals("username")|| c.getName().equals("password")) {                            c.setMaxAge(0);//将生命期限设置成0秒失效                            response.addCookie(c);//将c保存在cookie                        }                    }                }            }        %>        <a href="user.jsp">查看用户信息</a>    </body>

3.创建user.jsp

    <body>        <%        request.setCharacterEncoding("utf-8");        String username="";        String password="";        Cookie[] cookies = request.getCookies();            if (cookies != null && cookies.length > 0) {                for (Cookie c : cookies) {                    if (c.getName().equals("username")) {                        //URLDecoder方法解码成ut-8 username=URLDecoder.decode(c.getValue(),"utf-8");                    }                    if(c.getName().equals("password")){     password=URLDecoder.decode(c.getValue(),"utf-8");                    }                }            }        %>        用户名:<%=username %>        密码:<%=password %>    </body>

三、session和cookie对比

session cookie 在服务器端保存用户信息 在客户端保存用户信息 session中保存的是Object类型 cookie保存的是String 随会话的结束而将其存储的数据销毁 cookie可以长期保存客户端 保存重要信息 保存不重要的用户信息
原创粉丝点击