javaweb之Cookie篇

摘要:
Cookie是当浏览器访问Web资源时,Web服务器通过Http响应标头中的Set Cookie字段向浏览器发送的一组数据。Web服务器可以向Web浏览器发送多个cookie,但每个cookie的大小通常限制为4KB。addCookie方法在HttpServletResponse接口中定义,HttpServletRequest中的getCookie方法获取浏览器发送到服务器的所有cookie信息。5.SetPath和getPath用于设置和获取当前cookie的有效Web路径。

  Cookie是在浏览器访问某个Web资源时,由Web服务器在Http响应消息头中通过Set-Cookie字段发送给浏览器的一组数据。

  一个Cookie只能表示一个信息对,这个信息对有一个信息名(Name)和一个信息值(Value)组成。Web服务器可以给一个Web浏览器发送多个Cookie,但每个Cookie的大小一般被限制为4KB。

  在Servlet API中,使用java.servlet.http.Cookie类来封装一个Cookie信息。HttpServletResponse接口中定义addCookie方法,HttpServletRequest中getCookies方法获取浏览器发送给服务器的所有Cookie信息。

  Cookie类中相关的方法:

  1.构造方法,仅此一个 

   public Cookie(java.lang.String name,java.lang.String value)
  name参数中不能包含任何空白字符,逗号,分号,并不能以$字符开头

2.getName方法用于获取Cookie名称

3.getValue和setValue分别用于获取和设置Cookie的值

4.setMaxAge和getMaxAge用于设置和获取在客户端的有效时间,单位为秒,
  如果设置为0,则表示当Cookie发送到客户端浏览器时立即删除,
  如果设置为负数(-1),则表示浏览器并不会把这个Cookie保存在硬盘上,这种Cookie被称为临时Cookie(保存在硬盘上的Cookie叫做永久Cookie),
 它们(临时Cookie)只存在于当前浏览器的进程中,当浏览器关闭后,Cookie自动失效。对于IE浏览器来说,不同的浏览器窗口不能共享临时Cookie,但按Ctrl+N组合件或使用js的
window.open打开的窗口,由于和它们的父窗口属于同一个浏览器进程,因此它们可以共享临时Cookie,而在FireFox中,所有的进程和标签页都可以共享临时Cookie。

 5.setPath和getPath用于设置和获取当前Cookie的有效Web路径。如果在创建某个Cookie时未设置它的path属性,那么该Cookie只对当前访问的Servlet所在的Web路径及其子路径 有效。如果要想使Cookie对Web站点中所有可访问的路径有效,需要将path属性设置为“/”。
  getPath()  Returns the path on the server to which the browser returns this cookie.

6.setDomain和getDomain用于设置和获取当前Cookie的有效域。
7.setComment和getComment用于设置和返回当前Cookie的注释部分。
8.setVersion和getVersion用于设置和返回当前Cookie的协议版本。
9.setSecure和getSecure用于设置和返回当前Cookie是否只能使用安全的协议安装Cookie。
  getSecure()  Returns true if the browser is sending cookies only over a secure protocol, or false if the browser can send cookies using any pr  otocol.

使用举例:

  //设置临时Cookie
  Cookie tempcook = new Cookie("temp","123456789");
  tempcook.setMaxAge(-1);
  response.addCookie(tempcook);

  //设置MaxAge为0的Cookie
  Cookie cookie = new Cookie("cookie","6666");
  cookie.setMaxAge(0);
  response.addCookie(cookie);

  //设置永久Cookie
  String user = request.getParameter("user");
  if(user != null) {

    Cookie usercookie = new Cookie("user",user);
    usercookie.setMaxAge(48 * 3600);//秒为单位,48小时
    usercookie.setPath("/");//这个Cookie对站点内所有访问路径都有效
    response.addCookie(usercookie);
  }

-----------------------------------------------------------------------

//获取Cookies
Cookie[] cookies = request.getCookies();
for(Cookie c : cookies) {

  if("temp".equals(c.getName())) {

    out.println("临时Cookie值:"+c.getValue());
  } else if("cookie".equals(c.getName())) {

    out.println("Cookie值:"+c.getValue());
  } else if("user".equals(c.getName())) {

    out.println("永久Cookie值:"+c.getValue());
  }
}

 

免责声明:文章转载自《javaweb之Cookie篇》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇flink常用命令Linux/Unix 桌面趣事:文字模式下的 ASCII 艺术与注释绘画下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

关于cookie在一个页面设置但是在另外一个页面获取不到的原因

如上图,设置两个cookie,它所在的文件如下图: 接下来我们来看看浏览器里面的cookie,chorme如下查看: 其中你可以看到有两个cookie是我们设置的 那么我是不是现在就可以在登录页面获取到这两个cookie值了呢? 看下图: 当打开登录页面的cookie,你会发现并没有自己想要的cookie值,这是为什么呢?原理其实很简单,就是...

c# 事件3

1.什么是事件,使对象或者类具有通知功能的成员。//为了解决字段在外部被滥用,推出了事件 事件的功能能=通知+可选的事件参数(具体的详细信息,包括谁发送了消息,发送的什么消息) 使用:用于对象或者类件的动作协调与信息传递(消息推送) 事件模型(发生,响应模型),事件是工具,不会主动通知别人,被事件的拥有者的内部逻辑触发。 2.事件模型中的5个部分: 事件...

RabbitMQ入门

abbitMQ是一个在AMQP协议标准基础上完整的,可服用的企业消息系统。它遵循Mozilla Public License开源协议,采用 Erlang 实现的工业级的消息队列(MQ)服务器,Rabbit MQ 是建立在Erlang OTP平台上。 1.安装Erlang 所以在安装rabbitMQ之前,需要先安装Erlang 。 小编使用的是otp_wi...

4、LayIM 开发者文档

一、配置文档目录 1、好友列表状态 2、当前会话状态 3、查看群成员 4、业务暂无此必要 5、发送消息 6、接受消息 7、监听我主面板的在线状态 8、弹出申请好友面板(业务场景用于好友添加需申请) 9、弹出添加好友面板(业务场景可以直接添加好友)...

SIP协议参数详情

SIP消息结构 请求消息和响应消息都包括SIP消息头字段和SIP消息体字段; SIP消息头主要用来指明本消息是有由谁发起和由谁接受,经过多少跳转等基本信息; SIP消息体主要用来描述本次会话具体实现方式; 请求消息格式 SIP请求消息的格式,由SIP消息头和一组参数行组成 消息体定义:  Call-ID:头字段是用来将消息分组的唯一性标识  From:头字段...

DeepFacelab更新:分辨率提至640,效率翻倍!

这几天又更新了,好事儿是又有新功能可以玩了,“坏事儿”是感觉又要升级设备了。其实,总的来说这次更新,对低配高配玩家都有好消息。 1. 对于高配玩家,可以跑更高像素的模型。 2. 对于低配玩家,那些跑不起的像素也能跑起来了。 下面就来说说重点更新内容: 1.  模型训练参数 resolution 的最大值从512调到了640。 ​ 这意味着对于高配玩家来说可...