-- jsp中cookie的用法!

news/2024/12/22 9:26:28
--  jsp中cookie的用法!
一.什么是cookies?
  大家都知道,浏览器与WEB服务器之间是使用HTTP协议进行通信的,当某个用户发出页面请求时,WEB服务器只是简单的进行响应,然后就关闭与该用户的连接。因此当一个请求发送到WEB服务器时,无论其是否是第一次来访,服务器都会把它当作第一次来对待,这样的不好之处可想而知。为了弥补这个缺陷,Netscape开发出了cookie这个有效的工具来保存某个用户的识别信息,因此人们昵称为“小甜饼”。cookies是一种WEB服务器通过浏览器在访问者的硬盘上存储信息的手段:Netscape Navigator使用一个名为cookies.txt本地文件保存从所有站点接收的Cookie信息;而IE浏览器把Cookie信息保存在类似于C://windows//cookies的目录下。当用户再次访问某个站点时,服务端将要求浏览器查找并返回先前发送的Cookie信息,来识别这个用户。
  cookies给网站和用户带来的好处非常多:
  1、Cookie能使站点跟踪特定访问者的访问次数、最后访问时间和访问者进入站点的路径
  2、Cookie能告诉在线广告商广告被点击的次数,从而可以更精确的投放广告
  3、Cookie有效期限未到时,Cookie能使用户在不键入密码和用户名的情况下进入曾经浏览过的一些站点
  4、Cookie能帮助站点统计用户个人资料以实现各种各样的个性化服务
  在JSP中,我们也可以使用Cookie,来编写一些功能强大的应用程序。
  下面,我想介绍一下如何用JSP创建和处理Cookie。

  二.如何创建Cookie
  说了这么多,大家一定很想知道JSP是如何创建cookie了。JSP是使用如下的语法格式来创建cookie的:
  Cookie cookie_name =new Cookie("Parameter","Value");
  例如:Cookie newCookie =new Cookie("username","waynezheng"); response.addCookie(newCookie);
  解释:JSP是调用Cookie对象相应的构造函数Cookie(name,value)用合适的名字和值来创建Cookie,然后Cookie可以通过HttpServletResponse的addCookie方法加入到Set-Cookie应答头,本例中Cookie对象有两个字符串参数:username,waynezheng。注意,名字和值都不能包含空白字符以及下列字符:@ : ;? , " / [ ] ( ) =
  处理Cookie的属性
  看到这里,有的朋友又要问了:我光知道如何创建Cookie有什么用呀?是呀,光知道如何创建Cookie而不知道怎么使用是不够的。在JSP中,程序是通过cookie.setXXX设置各种属性,用cookie.getXXX读出cookie的属性,现把Cookie的主要属性,及其方法列于下,供大家参考:
  类型方法名方法解释
  String getComment() 返回cookie中注释,如果没有注释的话将返回空值.
  String getDomain() 返回cookie中Cookie适用的域名. 使用getDomain() 方法可以指示浏览器把Cookie返回给同一域内的其他服务器,而通常Cookie只返回给与发送它的服务器名字完全相同的服务器。注意域名必须以点开始(例如.yesky.com)
  int getMaxAge() 返回Cookie过期之前的最大时间,以秒计算。
  String getName() 返回Cookie的名字。名字和值是我们始终关心的两个部分,笔者会在后面详细介绍getName/setName。
  String getPath() 返回Cookie适用的路径。如果不指定路径,Cookie将返回给当前页面所在目录及其子目录下的所有页面。
  boolean getSecure() 如果浏览器通过安全协议发送cookies将返回true值,如果浏览器使用标准协议则返回false值。
  String getValue() 返回Cookie的值。笔者也将在后面详细介绍getValue/setValue。
  int getVersion() 返回Cookie所遵从的协议版本。
  void setComment(String purpose) 设置cookie中注释。
  void setDomain(String pattern) 设置cookie中Cookie适用的域名
  void setMaxAge(int expiry) 以秒计算,设置Cookie过期时间。
  void setPath(String uri) 指定Cookie适用的路径。
  void setSecure(boolean flag) 指出浏览器使用的安全协议,例如HTTPS或SSL。
  void setValue(String newValue) cookie创建后设置一个新的值。
  void setVersion(int v) 设置Cookie所遵从的协议版本。  
  读取客户端的Cookie
  在Cookie发送到客户端前,先要创建一个Cookie,然后用addCookie方法发送一个HTTP Header。JSP将调用request.getCookies()从客户端读入Cookie,getCookies()方法返回一个HTTP请求头中的内容对应的Cookie对象数组。你只需要用循环访问该数组的各个元素,调用getName方法检查各个Cookie的名字,直至找到目标Cookie,然后对该Cookie调用getValue方法取得与指定名字关联的值。
  例如
  <%
   String userName=request.getParameter("username");//从提交的HTML表单中获取,用户名
   Cookie theUsername=new Cookie("username",userName);//以"username",userName值/对创建一个Cookie
   response.addCookie(theUsername);
  %>
  ..............
  <%
   Cookie myCookie[]=request.getCookies();//创建一个Cookie对象数组
   for(int n=0;n=cookie.length-1;i++);//设立一个循环,来访问Cookie对象数组的每一个元素
   Cookie newCookie= myCookie[n];
   if(newCookie.getName().equals("username")); //判断元素的值是否为username中的值
    {%>
     你好,<%=newCookie.getValue()%>!//如果找到后,向他问好
    <%}
  %>
  设置Cookie的存在时间,及删除Cookie 在JSP中,使用setMaxAge(int expiry)方法来设置Cookie的存在时间,参数expiry应是一个整数。正值表示cookie将在这么多秒以后失效。注意这个值是cookie将要存在的最大时间,而不是cookie现在的存在时间。负值表示当浏览器关闭时,Cookie将会被删除。零值则是要删除该Cookie。如:  
  <%
   Cookie deleteNewCookie=new Cookie("newcookie",null);
   deleteNewCookie.setMaxAge(0);
   deleteNewCookie.setPath("/");
   response.addCookie(deleteNewCookie);
  %>  

http://www.niftyadmin.cn/n/4423130.html

相关文章

Vue(五) Vue整合第三方工具

一.Vue整合elementUI快速开发 elementUI是饿了么团队开发的一套开源的基于Vue的前端框架&#xff0c;提供了很多现成可复用的组件库、布局库、动画库&#xff0c;方便我们使用Vue快速集成&#xff0c;快速开发一个完整、好看的前端页面。官方参考文档&#xff1a;Element - The…

C++(一) 进阶知识(类、结构体、预处理命令)一文通

一.类的基本概念 类是一些列属性数据和事务行为的封装&#xff0c;是C面向对象的核心基础。类是对象的抽象&#xff0c;对象是类的具体化&#xff1b;类的基本内容包括事物的属性&#xff08;静态数据字段&#xff09;和行为&#xff08;动态函数方法&#xff09;&#xff0c;类…

利用SQL Server的扩展属性象access一样显示列的注释

利用SQL Server的扩展属性象access一样显示列的注释 access的设计视图有个不错的功能-----设计列的注释&#xff0c;这可以让设计者清楚地看到每个列的意义。一般的sql server建表时没有这个功能&#xff0c;但是他有扩展属性&#xff0c;这个功能也不错&#xff0c;可以把注释…

C#(一) C# 基础语法一文通

C# 是由微软&#xff08;Microsoft&#xff09;开发的&#xff0c;基于C和C的一种面向对象的编程语言&#xff0c;其语法规则十分类似于Java&#xff0c;常用于快速开发Windows桌面应用。本文将对C# 的一些基础语法知识进行快速学习&#xff0c;快速上手。 一.C# 程序结构 usi…

WinForm(一) WinForm入门与基本控件使用

一.Winform入门 WinForm 是 Windows Form 的简称&#xff0c;是基于 .NET Framework 平台的客户端&#xff08;PC软件&#xff09;开发技术&#xff0c;一般使用 C# 编程。在VS2019中&#xff0c;C# WinForm 编程需要创建「Windows窗体应用程序」项目。Windows 窗体应用程序是 …

WinForm(二) WinForm进阶与复杂控件使用

一.复合控件 1.控件的使用综述&#xff1a;在WinForm中使用控件主要包括以下几种情况&#xff08;1&#xff09;标准控件&#xff1a;直接使用winform自带的控件&#xff0c;比如button、textBox等。我们只需要修改属性&#xff0c;添加事件即可。&#xff08;2&#xff09;复合…

canal番外篇-otter

前置知识点 主从复制binlogcanal正则dockerjava 前置工具 dockerotter-all 场景描述&#xff08;增量同步&#xff09; 目前项目中使用的是mysql5.5&#xff0c;计划升级为mysql8.1&#xff0c;版本跨度较大&#xff0c;市面上可靠工具选择较少。otter符合预期&#xff0c…

显示表结构描述的Sql语句

select column_name,data_type,column_default,character_maximum_length from information_schema.columns where table_namet_conclusion select objname,value from ::fn_listextendedproperty(default,user,dbo,table,t_conclusion,column,default)