cookie案例-显示用户上次访问网站的时间

来源:互联网 发布:排八字软件 编辑:程序博客网 时间:2024/04/30 13:08

cookie API
public Cookie(String name,String value):构造函数
setValue与getValue:得到cookie的值
setMaxAge与getMaxAge:设置cookie的有效期(以秒为单位),若不设置,则cookie的有效期是浏览器进程。注:将最大时效设为0则是命令浏览器删除该cookie。(删除cookie时,path必须一致,否则不会删除)
setPath与getPath:设置cookie的有效目录。不设置,则cookie是由哪个servlet发出的,它的有效路径就是servlet所在的目录
setDomain与getDomain:设置cookie的域
getName:获得cookie的名称


案例:显示用户上次访问网站的时间,创建一个servlet:

package cn.sun;import java.io.IOException;import java.io.PrintWriter;import java.util.Date;import javax.servlet.ServletException;import javax.servlet.annotation.WebServlet;import javax.servlet.http.Cookie;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;//代表网站首页@WebServlet("/CookieDemo1")public class CookieDemo1 extends HttpServlet {    private static final long serialVersionUID = 1L;    public CookieDemo1() {        super();    }    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {        response.setCharacterEncoding("UTF-8");        response.setContentType("text/html;charset=UTF-8");        PrintWriter out=response.getWriter();        out.print("您上次访问时间是:");  //print()方法输出会自动换行        //获得用户的时间cookie        Cookie cookies[]=request.getCookies(); //返回一个cookie数组        for(int i=0;cookies!=null && i<cookies.length;i++){  //遍历            if(cookies[i].getName().equals("lastAccessTime")){   //判断是不是保存时间的cookie                long cookieValue=Long.parseLong(cookies[i].getValue()); //得到用户的上次访问时间,转化成一个毫秒值                Date date=new Date(cookieValue);  //用毫秒值创建一个Date对象                out.print(date.toLocaleString());  //输出            }        }        //给用户回送最新的访问时间        Cookie cookie=new Cookie("lastAccessTime",System.currentTimeMillis()+""); //创建一个保存用户最新访问时间的cookie,其值是当前的毫秒值        cookie.setMaxAge(1*30*24*3600); //设置cookie的有效期,以秒为单位        cookie.setPath("/day07"); //设置cookie的有效路径,这里访问day07应用下所有资源        response.addCookie(cookie); //把cookie写给浏览器    }    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {    }}

第一次运行这个servlet:因为第一次运行,所以后面没有显示上次访问的时间
因为第一次运行,所以后面没有显示上次访问的时间


第二次运行:显示了上一次访问的时间
显示了上一次访问的时间



引申:演示删除cookie:
更改CookieDemo1这个servlet,再新建一个servlet:CookieDemo2
CookieDemo1:

package cn.sun;import java.io.IOException;import java.io.PrintWriter;import java.util.Date;import javax.servlet.ServletException;import javax.servlet.annotation.WebServlet;import javax.servlet.http.Cookie;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;//代表网站首页@WebServlet("/CookieDemo1")public class CookieDemo1 extends HttpServlet {    private static final long serialVersionUID = 1L;    public CookieDemo1() {        super();    }    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {        response.setCharacterEncoding("UTF-8");        response.setContentType("text/html;charset=UTF-8");        PrintWriter out=response.getWriter();        out.print("<a href='/day07/CookieDemo2'>清除上次访问时间</a><br>");        out.print("您上次访问时间是:");  //print()方法输出会自动换行        //获得用户的时间cookie        Cookie cookies[]=request.getCookies(); //返回一个cookie数组        for(int i=0;cookies!=null && i<cookies.length;i++){  //遍历            if(cookies[i].getName().equals("lastAccessTime")){   //判断是不是保存时间的cookie                long cookieValue=Long.parseLong(cookies[i].getValue()); //得到用户的上次访问时间,转化成一个毫秒值                Date date=new Date(cookieValue);  //用毫秒值创建一个Date对象                out.print(date.toLocaleString());  //输出            }        }        //给用户回送最新的访问时间        Cookie cookie=new Cookie("lastAccessTime",System.currentTimeMillis()+""); //创建一个保存用户最新访问时间的cookie,其值是当前的毫秒值        cookie.setMaxAge(1*30*24*3600); //设置cookie的有效期,以秒为单位        cookie.setPath("/day07"); //设置cookie的有效路径,这里访问day07应用下所有资源        response.addCookie(cookie); //把cookie写给浏览器    }    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {    }}

CookieDemo2:

package cn.sun;import java.io.IOException;import javax.servlet.ServletException;import javax.servlet.annotation.WebServlet;import javax.servlet.http.Cookie;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;@WebServlet("/CookieDemo2")public class CookieDemo2 extends HttpServlet {    private static final long serialVersionUID = 1L;    public CookieDemo2() {        super();    }    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {        Cookie cookie=new Cookie("lastAccessTime",System.currentTimeMillis()+""); //创建一个保存用户最新访问时间的cookie,其值是当前的毫秒值        cookie.setMaxAge(0); //设置cookie的有效期,以秒为单位        cookie.setPath("/day07"); //删除cookie时,path必须一致              response.addCookie(cookie); //把cookie写给浏览器        response.sendRedirect("/day07/CookieDemo1");    }    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {    }}

运行结果:
这里写图片描述
当我们点击清除按钮时:
这里写图片描述
这样就清除了上次访问时间,即删掉了一个cookie

0 0