• 浅谈cookie技术


    浅谈cookie技术

    Javaweb编程中有一种方法称之为Cookie,在百度百科中,这样给cookie下定义:

    Cookie,有时也用其复数形式 Cookies。类型为“小型文本文件”,是某些网站为了辨别用户身份,进行Session跟踪而储存在用户本地终端上的数据(通常经过加密),由用户客户端计算机暂时或永久保存的信息。

    根据以上内容,也不难理解。cookie原意是“小饼干”,这又跟小饼干有什么关系呢?cookie还有一项含义是“网络饼干”,网络饼干(网络或互联网使用者发给中央服务器信息的计算机文件),这样就好理解了。

    也可以将cookie理解为一封信件:某客户端第一次访问服务器时,服务器写了一封信给客户端(信上的内容是访问时间、访问对象等等),等到客户端下一次来访问服务器时,客户端就会带着这封信,这样服务器就知道这个客户端上次来过了,并且很清楚地了解上次访问的具体时间,本次访问结束之后,服务器又把这封信拿过来,更新为本次访问的信息。简单说,就是这样的一个过程。

    cookie是一种客户端技术!

    示例

    简单编写一个cookie的应用:

    import javax.servlet.ServletException;
    import javax.servlet.http.Cookie;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import java.io.IOException;
    import java.io.PrintWriter;
    import java.util.Date;
    //保存用户上一次访问的时间
    public class CookieDemo01 extends HttpServlet {
        @Override
        protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
            //解决中文乱码问题
            req.setCharacterEncoding("GBK");
            resp.setCharacterEncoding("GBK");
            PrintWriter out = resp.getWriter();
            //服务器端从客户端获取cookie
            Cookie[] cookies = req.getCookies();
            //判断cookie是否存在
            if (cookies!=null){
                out.write("您上次访问本网站的时间是:");
                for (int i = 0; i < cookies.length; i++) {
                    Cookie cookie = cookies[i];
                    String cookieName = cookie.getName();   //获取cookie的名字
                    if (cookieName.equals("LastLoginTime")){
                        long llt = Long.parseLong(cookie.getValue()); //获取cookie中的值
                        Date date = new Date(llt);
                        out.write(date.toLocaleString());
                    }
                }
            }else {
                out.write("这是您第一次访问本站!");
            }
            //服务器给客户端响应一个cookie,覆盖上次的数据
            Cookie lastLoginTime = new Cookie("LastLoginTime", System.currentTimeMillis()+"");
            resp.addCookie(lastLoginTime);
        }
        @Override
        protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
            doGet(req, resp);
        }
    }

    用于清除cookie的类(将cookie的有效期设置为0即可):

    package psl.wong.servlet;
    import javax.servlet.ServletException;
    import javax.servlet.http.Cookie;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import java.io.IOException;
    import java.io.PrintWriter;
    import java.util.Date;
    //保存用户上一次访问的时间
    public class CookieDemo02 extends HttpServlet {
        @Override
        protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
            Cookie lastLoginTime = new Cookie("LastLoginTime", System.currentTimeMillis() + "");
            lastLoginTime.setMaxAge(0);     //关键代码
            PrintWriter writer = resp.getWriter();
            writer.write("This cookie has deleted!");
            resp.addCookie(lastLoginTime);
        }
        @Override
        protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
            doGet(req, resp);
        }
    }

    web.xml的注册:

    <?xml version="1.0" encoding="UTF-8"?>
    <web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
             version="4.0"
             metadata-complete="true"><servlet>
            <servlet-name>CookieDemo01</servlet-name>
            <servlet-class>psl.wong.servlet.CookieDemo01</servlet-class>
        </servlet>
        <servlet-mapping>
            <servlet-name>CookieDemo01</servlet-name>
            <url-pattern>/login1</url-pattern>
        </servlet-mapping>
        <servlet>
            <servlet-name>CookieDemo02</servlet-name>
            <servlet-class>psl.wong.servlet.CookieDemo02</servlet-class>
        </servlet>
        <servlet-mapping>
            <servlet-name>CookieDemo02</servlet-name>
            <url-pattern>/login2</url-pattern>
        </servlet-mapping></web-app>
  • 相关阅读:
    Android studio怎么创建shape的XML文件
    请问如何在PS中将一张图标里的各个小图标分离成一个个图标?
    IOS 开发之 -- 过滤掉字符串里面所有的非法字符 字典和json之间的互转
    ios开发之 -- 5分钟集成融云的客服功能
    ios开发之 --调用系统的页面,显示中文
    IOS 开发之-- textfield和textview,return键的改变,点击return键
    IOS 开发之--获取真机的deviceToeken
    iOS 开发之--使用AFNetWorking3.1.0上传单张/多张图片
    iOS 开发之--打测试包的时候报错的解决方法
    ios开发之 -- 调用系统定位获取当前经纬度与地理信息
  • 原文地址:https://www.cnblogs.com/awong18/p/13281826.html
Copyright © 2020-2023  润新知