javaweb之Cookie显示上次登录时间和清除Cookie、Cookie的细节
2014-03-09 20:44
465 查看
import java.io.IOException; import java.io.PrintWriter; import java.text.DateFormat; import java.text.SimpleDateFormat; import java.util.Date; import javax.servlet.ServletException; import javax.servlet.http.Cookie; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; //代表网站首页 //Cookie技术显示用户上次访问网站的时间 public class CookieDemo1 extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setCharacterEncoding("UTF-8"); response.setHeader("Content-type", "text/html;charset=UTF-8"); PrintWriter out = response.getWriter(); out.print("<a href='/day07/servlet/CookieDemo2'>清除上次访问时间</a><br>"); out.print("您上次访问的时间是:"); // 拿到请求头中所有的cookie Cookie cookies[] = request.getCookies(); // 遍历cookies找到lastAccessTime这个cookie for (int i = 0; cookies != null && i < cookies.length; i++) { if (cookies[i].getName().equals("lastAccessTime")) { // 得到最后访问时间的毫秒数 long cookieValue = Long.parseLong(cookies[i].getValue()); // 将最后访问时间变成一个日期类型 Date date = new Date(cookieValue); // 格式化这个日期 DateFormat df = new SimpleDateFormat("yyyy-MM-WW kk:mm:ss"); String lastAccessTime = df.format(date); out.print(lastAccessTime); } } // 将最新的访问时间设置回去 Cookie cookie = new Cookie("lastAccessTime", System.currentTimeMillis() + ""); // 设置有效期为一个月 cookie.setMaxAge(1 * 3600 * 24 * 30); // 设置有效访问路径为/day07这个项目下的所有资源 cookie.setPath("/day07"); // 在response中增加一个cookie,服务器会自动增加Set-Cookie头字段 response.addCookie(cookie); } public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doGet(request, response); } }
import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.http.Cookie; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; //删除浏览器中的cookie public class CookieDemo2 extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { test1(response); test2(request, response); } // 自己实验的方法,拿到了原有的cookie想要删除还是要先设置下Path,否则Path还是会在这个servlet的目录下 // 拿到了原有的cookie,如果只修改setMaxAge为0还是不行的! private void test2(HttpServletRequest request, HttpServletResponse response) { // 拿到请求头中所有的cookie Cookie cookies[] = request.getCookies(); // 遍历cookies找到lastAccessTime这个cookie for (int i = 0; cookies != null && i < cookies.length; i++) { if (cookies[i].getName().equals("lastAccessTime")) { Cookie cookie = cookies[i]; cookie.setMaxAge(0); cookie.setPath("/day07"); response.addCookie(cookie); } } } // 开发中的方法 private void test1(HttpServletResponse response) { Cookie cookie = new Cookie("lastAccessTime", ""); // 设置为0表示让浏览器删除这个cookie cookie.setMaxAge(0); // 删除cookie的时候Path必须一致,因为同一个cookie,Path肯定一致 cookie.setPath("/day07"); response.addCookie(cookie); } public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doGet(request, response); } }
1. 一个Cookie只能标识一种信息,它至少含有一个标识该信息的名称(NAME)和设置值(VALUE)
2. 一个web站点可以给一个web路览器发送多个Cookie,一个web浏览器也可以存储多个web站点提供的Cookie
3. 浏览器一般只允许存放300个Cookie,每个站点最多存放20个Cookie,每个Cookie的大小限制为4KB
4. 如果创建了一个cookie,并将它发送到了浏览器,默认情况下它时一个会话级别的cookie(即存储在浏览器的内存中),用户推出浏览器之后即被删除。若希望浏览器将该cookie存储在磁盘上,则需要使用maxAge,并给出一个以秒为单位的时间。将最大时效设为0则是命令浏览器删除该cookie
5. 注意,删除cookie时,path必须一致,否则不会删除
相关文章推荐
- 学习java最近阶段的感受
- Rhythmk 一步一步学 JAVA (17):Servlet 文件上传
- Android开发 (eclipse)Unable to execute dex: Multiple dex files define Lcom/google/.......
- struts2中重定向中文参数乱码梳理
- java设计模式(创建型)之单例模式
- Java基础知识2
- java集群
- Java虚拟机笔记
- MyEclipse项目下包层次结构问题
- Observer与Observable
- eclipse实用配置
- eclipse常用快捷键
- Java界面SWT基本组件——Button
- day44 spring+jdbc(事务)==>spring+hibernate(事务)
- Eclipse: symbol '???' could not be resolved [duplicate]
- 将不同数据类型转为json格式写的java类
- [Java]读取文件方法大全
- spring在javaWeb环境中加载 bean 配置文件方式的选择
- java.lang.IllegalStateException: Cannot call sendRedirect() after the response has been committed
- Eclipse 3.2 + MyEclipse 5.0GA + WebLogic 9.2