JSP Cookie的使用

1年前 (2024-04-27)
Cookie 不是 JSP 内置对象,而是由 Netscape 公司发明,用来跟踪用户会话(session)的方式。

Cookie 由服务器生成并发送给浏览器(客户端),浏览器会将其以文本文件的形式存储在某个目录下。

例如,IE 浏览器把 cookie 信息保存在类似于 C://windows//cookies 的目录下,当用户再次访问某个网站时,服务器就会要求浏览器查找并返回之前发送的 cookie 信息,来识别此用户。

识别用户通常有以下步骤:

  1. 服务器把 cookie 信息发送到浏览器,例如:用户 ID、用户名称等信息。

  2. 浏览器在本地存储这些信息。

  3. 浏览器再次向服务器发送请求时,它会同时将本地存储的 cookie 信息一同发送给服务器,然后服务器使用这些信息来识别用户或其它。


cookie 的作用表现在以下方面:

  • 对特定对象的追踪,如用户的访问次数、访问时间等。

  • 统计网页的浏览次数。

  • 在 cookie 有效期内,记录用户的登录信息,简化下一次的登录过程。

  • 实现各种个性化服务,如”最近浏览过的商品“。

注意:由于 cookie 会将用户的个人信息保存在客户端,如用户名、计算机名、以及浏览和登录的网站等。这些信息可能会包含一些比较敏感的内容,所以从安全角度来说,使用 cookie 存在着一定的风险,因此不建议在 cookie 中保存比较重要或隐私的内容。

cookie方法

cookie 常用方法如下:

方法

说明

public void setDomain(String pattern)

设置 cookie 的域名,如 biancheng网站站点" rel="nofollow" />

cookie cookie = new cookie(String name,String value);

注意:name 和 value 中不能包含空格和以下字符:

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

2)写入 cookie

创建 cookie 对象后,调用 response.addCookie() 方法写入 cookie,代码如下:

response.addcookie(cookie);

3)设置 cookie 有效期

调用 setMaxAge() 方法设置 cookie 的有效期(单位:秒),如将 cookie 有效期设置为 24 小时,代码如下:

cookie.setMaxAge(60*60*24); 

4)读取cookie

调用 request.getCookies() 方法读取 cookie,该方法返回 HTTP 请求中的 cookie 对象数组,需要通过遍历进行访问。

示例

通过 HTML 表单将客户端数据提交到 index.jsp 中,并设置 cookie。login.jsp 代码如下:

<%@ page language="java" contentType="text/html; charset=UTF-8"

pageEncoding="UTF-8"%>

<html>

<head>

<title>编程帮(www.biancheng网站站点" rel="nofollow" />

<%@ page language="java" contentType="text/html; charset=UTF-8"

pageEncoding="UTF-8"%>

<%@ page import="java网站站点" rel="nofollow" /> login.jsp运行结果
login.jsp页面运行结果

 

index.jsp

index.jsp页面运行结果

读取cookie

调用 request.getcookies() 方法,在 cookie.jsp 页面中读取 cookie,cookie.jsp 代码如下:

<%@ page language="java" contentType="text/html; charset=UTF-8"

pageEncoding="UTF-8"%>

<%@ page import="java网站站点" rel="nofollow" /> cookie.jsp运行结果

删除cookie

删除 cookie 步骤如下:

  • 获取 cookie

  • 将要删除的 cookie 有效期设置为 0

  • 调用 response.addCookie() 方法重新写入 cookie


删除参数名为“name”的 cookie,cookie.jsp 代码如下:

<%@ page language="java" contentType="text/html; charset=UTF-8"

pageEncoding="UTF-8"%>

<%@ page import="java网站站点" rel="nofollow" /> cookie.jsp页面运行结果
注:也可以手动在浏览器中删除 cookie。

session和cookie的区别

session 和 cookie 的区别如下:

session

cookie

将信息保存在服务器

将信息保存在客户端

保存的值是 Object 类型

保存的值是 String 类型

session 存储的数据随会话的结束而结束

cookie 可以长期保存在客户端

安全性高,可以保存重要的信息

安全性低,通常用于保存不重要的信息


实际开发中,需要根据不同的业务需求来选择采用哪种技术,例如,用户的用户名和密码等敏感信息不能使用 cookie 存储,淘宝购物的”最近浏览过的商品“,则可以使用 cookie 存储在客户端。