1.cookie是什么

Cookie是存储在客户机的文本文件,它们保存了大量轨迹信息。在servlet技术基础上,JSP显然能够提供对HTTP cookie的支持。

通常有三个步骤来识别回头客:

  • 服务器脚本发送一系列cookie至浏览器。比如名字,年龄,ID号码等等。
  • 浏览器在本地机中存储这些信息,以备不时之需。
  • 当下一次浏览器发送任何请求至服务器时,它会同时将这些cookie信息发送给服务器,然后服务器使用这些信息来识别用户或者干些其它事情

2.使用JSP设置Cookie

(1)创建一个Cookie对象: 调用Cookie的构造函数,使用一个cookie名称和值做参数,它们都是字符串。

  1. Cookie cookie = new Cookie("key","value");

请务必牢记,名称和值中都不能包含空格或者如下的字符:

  1. [ ] ( ) = , " / ? @ : ;

(2) 设置有效期:调用setMaxAge()函数表明cookie在多长时间(以秒为单位)内有效。下面的操作将有效期设为了24小时。

  1. cookie.setMaxAge(60*60*24);

(3) 将cookie发送至HTTP响应头中:调用response.addCookie()函数来向HTTP响应头中添加cookie。

  1. response.addCookie(cookie);
  2.  

3.实例演示

main.jsp 文件代码如下所示:

  1. <%@ page language="java" contentType="text/html; charset=UTF-8"
  2. pageEncoding="UTF-8"%>
  3. <%@ page import="java.net.*" %>
  4. <%
  5. // 编码,解决中文乱码
  6. String str = URLEncoder.encode(request.getParameter("name"),"utf-8");
  7. // 设置 name 和 url cookie
  8. Cookie name = new Cookie("name",
  9.          str);
  10. Cookie url = new Cookie("url",
  11.              request.getParameter("url"));
  12.  
  13. // 设置cookie过期时间为24小时。
  14. name.setMaxAge(60*60*24);
  15. url.setMaxAge(60*60*24);
  16.  
  17. // 在响应头部添加cookie
  18. response.addCookie( name );
  19. response.addCookie( url );
  20. %>
  21. <html>
  22. <head>
  23. <title>设置 Cookie</title>
  24. </head>
  25. <body>
  26.  
  27. <h1>设置 Cookie</h1>
  28.  
  29. <ul>
  30. <li><p><b>网站名:</b>
  31. <%= request.getParameter("name")%>
  32. </p></li>
  33. <li><p><b>网址:</b>
  34. <%= request.getParameter("url")%>
  35. </p></li>
  36. </ul>
  37. </body>
  38. </html>

以下是一个简单的 HTML 表单通过GET方法将客户端数据提交到 main.jsp 文件中,并设置 cookie:

  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <meta charset="utf-8">
  5. <title>菜鸟教程(runoob.com)</title>
  6. </head>
  7. <body>
  8.  
  9. <form action="main.jsp" method=GET>
  10. 站点名: <input type="text" name="name">
  11. <br />
  12. 网址: <input type="text" name="url" />
  13. <input type="submit" value="提交" />
  14. </form>
  15.  
  16. </body>
  17. </html>
  18.  

4.使用 JSP 读取 Cookie

想要读取cookie,您就需要调用request.getCookies()方法来获得一个javax.servlet.http.Cookie对象的数组,然后遍历这个数组,使用getName()方法和getValue()方法来获取每一个cookie的名称和值。

  1. <h3实例演示< h3="">

让我们来读取上个例子中的cookie, 以下为 cookie.jsp 文件代码:

  1. <%@ page language="java" contentType="text/html; charset=UTF-8"
  2. pageEncoding="UTF-8"%>
  3. <%@ page import="java.net.*" %>
  4. <!DOCTYPE html>
  5. <html>
  6. <head>
  7. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  8. <title>获取 Cookie</title>
  9. </head>
  10. <body>
  11. <%
  12. Cookie cookie = null;
  13. Cookie[] cookies = null;
  14. // 获取cookies的数据,是一个数组
  15. cookies = request.getCookies();
  16. if( cookies != null ){
  17. out.println("<h2> 查找 Cookie 名与值</h2>");
  18. for (int i = 0; i < cookies.length; i++){
  19. cookie = cookies[i];
  20.  
  21. out.print("参数名 : " + cookie.getName());
  22. out.print("<br>");
  23. out.print("参数值: " + URLDecoder.decode(cookie.getValue(), "utf-8") +" <br>");
  24. out.print("------------------------------------<br>");
  25. }
  26. }else{
  27. out.println("<h2>没有发现 Cookie</h2>");
  28. }
  29. %>
  30. </body>
  31. </html>
  32.  

5.使用JSP删除Cookie

使用JSP删除Cookie

删除cookie非常简单。如果您想要删除一个cookie,按照下面给的步骤来做就行了:

  • 获取一个已经存在的cookie然后存储在Cookie对象中。
  • 将cookie的有效期设置为0。
  • 将这个cookie重新添加进响应头中。

实例演示

下面的程序删除一个名为"name"的cookie,当您第二次运行cookie.jsp时,name 将会为 null。

  1. <%@ page language="java" contentType="text/html; charset=UTF-8"
  2. pageEncoding="UTF-8"%>
  3. <%@ page import="java.net.*" %>
  4. <!DOCTYPE html>
  5. <html>
  6. <head>
  7. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  8. <title>获取 Cookie</title>
  9. </head>
  10. <body>
  11. <%
  12. Cookie cookie = null;
  13. Cookie[] cookies = null;
  14. // 获取当前域名下的cookies,是一个数组
  15. cookies = request.getCookies();
  16. if( cookies != null ){
  17.      out.println("<h2> 查找 Cookie 名与值</h2>");
  18. for (int i = 0; i < cookies.length; i++){
  19. cookie = cookies[i];
  20. if((cookie.getName( )).compareTo("name") == 0 ){
  21. cookie.setMaxAge(0);
  22. response.addCookie(cookie);
  23. out.print("删除 Cookie: " +
  24. cookie.getName( ) + "<br/>");
  25. }
  26. out.print("参数名 : " + cookie.getName());
  27. out.print("<br>");
  28. out.print("参数值: " + URLDecoder.decode(cookie.getValue(), "utf-8") +" <br>");
  29. out.print("------------------------------------<br>");
  30. }
  31. }else{
  32.      out.println("<h2>没有发现 Cookie</h2>");
  33. }
  34. %>
  35. </body>
  36. </html>

jsp学习与提高(三)——JSP Cookie 处理的更多相关文章

  1. JSP学习笔记(三):Session和Cookie

    一.JSP Session HTTP是无状态协议,这意味着每次客户端检索网页时,都要单独打开一个服务器连接,因此服务器不会记录下先前客户端请求的任何信息.有三种方法来维持客户端与服务器的会话: 1.C ...

  2. Head First Servlets & JSP 学习笔记 第三章 —— MVC迷你教程

    临渊羡鱼,不如退而结网!是时候动手搞事情了! 我们的四大步骤: ①分析用户的视图(也就是浏览器要显示的东西),以及高层体系结构: (这个就是所谓的前端吧?用JSP?JSP可以当成Html来用吧?高层体 ...

  3. jsp学习与提高(二)——JSP 隐式对象、表单处理及过滤器

    1.JSP 隐式对象 JSP隐式对象是JSP容器为每个页面提供的Java对象,开发者可以直接使用它们而不用显式声明.JSP隐式对象也被称为预定义变量. JSP所支持的九大隐式对象: 对象 描述 req ...

  4. JSP学习笔记(三)

    jsp与javabean 编写javabean 创建与使用bean 获取和修改bean的属性 javabean是一种java类,是通过封装属性和方法成为具有某种功能或处理某个业务的对象,简称bean, ...

  5. jsp学习与提高(一)——JSP生命周期、三大指令及动作

    1.jsp定义: 1.1以java语言为脚本语言,运行在服务端的程序: 1.2处理客户请求,生成页面 1.3其本质是个sevlet会生成.java文件编译后再生成.class文件 2.jsp生命周期( ...

  6. jsp学习(2)jsp标签

    1.脚本程序 脚本程序可以包含任意量的Java语句.变量.方法或表达式,只要它们在脚本语言中是有效的. 脚本程序的语法格式:<%代码片段%>您也可以编写与其等价的XML语句,就像下面这样: ...

  7. jsp学习(1)jsp请求过程和生命周期

    一.服务器处理jsp请求的过程: 以下步骤表明了 Web 服务器是如何使用JSP来创建网页的: 1.浏览器发送一个 HTTP 请求给服务器. 2.Web 服务器识别出这是一个对 JSP 网页的请求,并 ...

  8. JSP学习(二)JSP指令

    JSP指令 JSP指令(directive)是为JSP引擎而设计的,它们并不直接产生任何可见输出,而只是告诉引擎如何处理JSP页面中的其余部分. JSP指令的基本语法格式:<%@ 指令 属性名= ...

  9. JSP学习(一)JSP基础语法

    JSP基础语法 1.JSP模版元素 JSP页面中的HTML内容称之为JSP模版元素. JSP模版元素定义了网页的基本骨架,即定义了页面的结构和外观. <%@ page language=&quo ...

随机推荐

  1. javascript 跨浏览器事件处理

    <div id="myDiv" style="width:100px; height:100px; border:1px solid #f00;"> ...

  2. 使用diff制作补丁【学习笔记】

    源文件:main.c #include <stdio.h> int main() { printf("hello"); } 修改之后的文件: main1.c #incl ...

  3. Python爬虫 —— 抓取美女图片(Scrapy篇)

    杂谈: 之前用requests模块爬取了美女图片,今天用scrapy框架实现了一遍. (图片尺度确实大了点,但老衲早已无恋红尘,权当观赏哈哈哈) Item: # -*- coding: utf-8 - ...

  4. 大数据之路- Hadoop环境搭建(Linux)

    前期部署 1.JDK 2.上传HADOOP安装包 2.1官网:http://hadoop.apache.org/ 2.2下载hadoop-2.6.1的这个tar.gz文件,官网: https://ar ...

  5. 脚本简介jQuery微信开放平台注册表单

    脚本简介jQuery微信开放平台注册表单是一款仿微信开放平台的选项卡带步骤的注册表单验证jQuery代码 分享自:http://www.huiyi8.com/jiaoben/ 下载地址:http:// ...

  6. centos7搭建redis主从复制,并模拟故障切换。

    Cntos7搭建redis主从复制,并模拟故障主从切换 主从复制搭建 主机:192.168.161.179 从机:192.168.161.180 1.        安装主redis 自己本地环境,关 ...

  7. SSH中的Hibernate

    SSH中的Hibernate 就是DAO连接数据库对数据进行实际操作,做了架构简化,对数据库的操作.

  8. hdu-5778 abs(暴力枚举)

    题目链接: abs Time Limit: 2000/1000 MS (Java/Others)     Memory Limit: 131072/131072 K (Java/Others) Pro ...

  9. phpstorm 代码按列对齐

    设置方式: Preference... -> Editor -> CodeStyle -> PHP -> Other -> Align key-value pairs

  10. VirtualBox文件系统已满--磁盘扩容

    第1步:为virtualbox虚拟电脑扩容 进入命令行,以Windows系统为例 (特别注意空格和中文) 1.启动CMD命令行,进入VirtualBox的安装目录.如 运行:cmd C:\Users\ ...