千家信息网

Jsp中的Cookies有什么用

发表于:2025-11-09 作者:千家信息网编辑
千家信息网最后更新 2025年11月09日,这篇文章主要介绍了Jsp中的Cookies有什么用,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。一、Cookie是通过HttpServ
千家信息网最后更新 2025年11月09日Jsp中的Cookies有什么用

这篇文章主要介绍了Jsp中的Cookies有什么用,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。

一、Cookie是通过HttpServletResponse的addCookie方法加入到Set-Cookie应答头中的

例如:

Cookie userCookie = new Cookie("user", "admin");   response.addCookie(userCookie);

和设置有关系的还有以下两个重要方法

1.setMaxAge

设置Cookie过期之前的时间,以秒计。如果不设置该值,则Cookie只在当前会话内有效,而且这些Cookie不会保存到磁盘上。

注意:删除cookie就是通过该方法实现的。将要删除的cookie的过期之前的时间指定为0就可以达到删除该cookie的目的。

2.setPath

设置Cookie适用的路径。如果不指定路径,Cookie将返回给当前页面(jsp(SUN企业级应用的***)页面或者Servlet的映射)所在目录及其子目录下的所有页面。

注意:

A:所有的cookie都是有路径的

B:该方法设置的路径为客户端路径,即"/"代表服务器根目录,而不是WEB应用根目录

C:该方法设置路径时,"/myWeb/"与"/myWeb"是不同的,要特别注意;前者可以关联到服务器的myWeb目录下,而后者则不可以。

D:该方法设置路径时,没有相对目录可言,即不论在哪个目录下设置setPath("/myWeb/"),该cookie都将关联到服务器的myWeb目录下(setPath("/myWeb")则不可以),而不是当前目录的myWeb的子目录下;同样,设置setPath("myWeb/")和setPath("myWeb")也不能关联到当前目录的myWeb的子目录下。

这里有个奇怪的例子,就是在一个web应用下设置的cookie可以在另一个web应用下获得(两个web应用在同一个服务器下)
目录结构:在服务器根目录上有web1和web2两个目录,在web1下有setcookie.jsp(SUN企业级应用的***)和getcookie.jsp(SUN企业级应用的***)、在web2下有getcookie.jsp(SUN企业级应用的***)

web1下的setcookie.jsp(SUN企业级应用的***)

<%  Cookie userCookie = new Cookie("user", "admin");   userCookie.setMaxAge(24*60*60);  userCookie.setPath("/web2/");  response.addCookie(userCookie);  %>

web1下的getcookie.jsp(SUN企业级应用的***)

<%  Cookie[] cookie = request.getCookies();  String user = new String();  if ( cookie != null ) {  for (int i = 0; i < cookie.length; i++) {  Cookie myCookie = cookie[i];  if (myCookie.getName().equals("user")) {  user = myCookie.getValue();  }  }  }  out.println("user = " + user);  %>  web2下的getcookie.jsp(SUN企业级应用的***)  <%  Cookie[] cookie = request.getCookies();  String user = new String();  if ( cookie != null ) {  for (int i = 0; i < cookie.length; i++) {  Cookie myCookie = cookie[i];  if (myCookie.getName().equals("user")) {  user = myCookie.getValue();  }  }  }  out.println("user = " + user);  %>

先访问web1下的setcookie.jsp(SUN企业级应用的***),然后分别访问web1和web2下面的getcookie.jsp(SUN企业级应用的***)文件,你会发现奇怪的现象,web1下的getcookie.jsp(SUN企业级应用的***)中user为空而web2下的getcookie.jsp(SUN企业级应用的***)中user却有值,这就实现了从一个web应用下设置的cookie在另一个web应用下获得。

大多数人删除cookie不成功都是因为目录原因。一个典型的原因是在某一个目录中设置了cookie(没有调用setPath方法)却在另一个目录中删除该cookie(其实是调用setMaxAge方法)

3、跨域共享cookie的方法:设置

cookie.setDomain(".jszx.com");

A机所在的域:home.langchao.com,A有应用cas

B机所在的域:jszx.com,B有应用webapp_b

1)在cas下面设置cookie的时候,增加cookie.setDomain(".jszx.com");,这样在webapp_b下面就可以取到cookie。

2)这个参数必须以"."开始。

3)输入url访问webapp_b的时候,必须输入域名才能解析。比如说在A机器输入:http://lc-bsp.jszx.com:8080/webapp_b,可以获取cas在客户端设置的cookie,而B机器访问本机的应用,输入:http://localhost:8080/webapp_b则不可以获得cookie。

4)设置了cookie.setDomain(".jszx.com");,还可以在默认的home.langchao.com下面共享。

二、读取

从客户端读取Cookie时调用的是HttpServletRequest的getCookies方法。该方法返回一个与HTTP请求头中的内容对应的Cookie对象数组。得到这个数组之后,一般是用循环访问其中的各个元素,调用getName检查各个Cookie的名字,直至找到目标Cookie。然后对这个目标Cookie调用getValue,根据获得的结果进行其他处理。

注意:若jsp(SUN企业级应用的***)和Servlet所在目录(Servlet为其映射目录)的父目录中有同名cookie,则request.getCookie()方法得到的Cookie数组中保存的是其父目录中的cookie的信息;

三、说明

我们知道,对于一个页面中的request和response,是一次http请求产生的,request是http请求中的所有参数,因此包含了发出这次http请求时cookie的值,而response是对于这次http请求webapplication产生的反应,所以它可以写cookie的值,这样看来,request得到的cookie的值,和response要写的cookie的值可以说是完全不同的。

简单地说request得到的cookie的值是在这次http请求之前的cookie的值,而response要写得值是这次http请求之后的cookie的值。所以,在同一个request和response中,如果response中增加了新的cookie,request中并不能得到。

感谢你能够认真阅读完这篇文章,希望小编分享的"Jsp中的Cookies有什么用"这篇文章对大家有帮助,同时也希望大家多多支持,关注行业资讯频道,更多相关知识等着你来学习!

应用 目录 企业 方法 路径 服务器 服务 所在 篇文章 页面 输入 两个 子目 子目录 客户 客户端 数组 根目录 关联 不同 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 数据库应用开发区海边 浙江碳银互联网科技股权 网络安全审计系统 破解 地瓜服务器 中国互联网公司算是高科技吗 申请企业软件开发硬件环境 计算机网络技术专业弱势和优势 电脑网络安全防护措施包括 江西网络安全员考试 sql的数据库安全管理包括 服务器布置几个项目 工信部技术技能人才数据库 小学学习网络安全简报 实现简单的界面与数据库的交互 网络技术宣传的企业代码 数字技术与网络技术的联系 网络安全六大意识是啥 数据库管理员是人吗 软件开发商与使用方安全协议 恶魔之魂重制版服务器好慢 信用数据库怎么保证信息安全 网络延迟最短的服务器dns 花旗银行软件开发中心招聘 mc服务器没有领地怎么办 gbase数据库安装 金融科技工业互联网现状 金蝶专业版账套的数据库置疑 诺诺开票软件开发公司 盘锦总部生态园有软件开发吗 网络安全发现趋势
0