`
chenlk823
  • 浏览: 37375 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

JSP中Cookie的读写

 
阅读更多
Cookie的本质是一个键值对,当浏览器访问web服务器的时候写入在客户端机器上,里面记录一些信息。Cookie还有一些附加信息,比如域名、有效时间、注释等等。

下面是一个jsp中写入读取Cookie的测试:在顶级域名中写入Cookie,在子域名中读取,目的是实现一个分布系统的单点登录。

两个jsp中读写代码如下:

写入:

  <%
  Cookie cookie = new Cookie("write","cookie_write");
  cookie.setComment("这是一个Cookie写入测试!");
  cookie.setVersion(100);
  cookie.setMaxAge(3600);
  cookie.setDomain(".iisp.com");
  response.addCookie(cookie);
 
  %>


读取

    <%
    Cookie cookies[]=request.getCookies(); 
    out.println(" cookie的数量为:"+ cookies.length);
      out.println("<br>"+"<br>");
    for(int i = 0;i<cookies.length;i++){
      out.println("getName="+cookies[i].getName()+"<br>"); 
      out.println("getValue="+cookies[i].getValue()+"<br>"); 
      out.println("getComment="+cookies[i].getComment()+"<br>"); 
      out.println("getDomain="+cookies[i].getDomain()+"<br>");
      out.println("getPath="+cookies[i].getPath()+"<br>");
      out.println("getMaxAge="+cookies[i].getMaxAge()+"<br>");
      out.println("getVersion="+cookies[i].getVersion()+"<br>");
      out.println("getSecure="+cookies[i].getSecure()+"<br>");
      out.println("<br>"+"<br>");
    }
    %>


测试结果表明:Cookied的写入读取均没有问题,并且Cookie的访问和域名有密切关系。子域名下可以读取到上级域名的Cookie。而不能读取到其他域名下的Cookie。

 在Javascript脚本里,一个cookie 实际就是一个字符串属性。当你读取cookie的值时,就得到一个字符串,里面当前WEB页使用的所有cookies的名称和值。每个cookie除了name名称和value值这两个属性以外,还有四个属性。这些属性是: expires过期时间、 path路径、 domain域、以及 secure安全。

  Expires – 过期时间。指定cookie的生命期。具体是值是过期日期。如果想让cookie的存在期限超过当前浏览器会话时间,就必须使用这个属性。当过了到期日期时,浏览器就可以删除cookie文件,没有任何影响。

  Path – 路径。指定与cookie关联的WEB页。值可以是一个目录,或者是一个路径。如果/head/index.html 建立了一个cookie,那么在/head/目录里的所有页面,以及该目录下面任何子目录里的页面都可以访问这个cookie。这就是说,在/head/stories/articles 里的任何页面都可以访问/head/index.html建立的cookie。但是,如果/zdnn/ 需要访问/head/index.html设置的cookes,该怎么办?这时,我们要把cookies的path属性设置成“/”。在指定路径的时候,凡是来自同一服务器,URL里有相同路径的所有WEB页面都可以共享cookies。现在看另一个例子:如果想让 /head/filters/ 和/head/stories/共享cookies,就要把path设成“/head”。

  Domain – 域。指定关联的WEB服务器或域。值是域名,比如goaler.com。这是对path路径属性的一个延伸。如果我们想让dev.mycompany.com 能够访问bbs.mycompany.com设置的cookies,该怎么办? 我们可以把domain属性设置成“mycompany.com”,并把path属性设置成“/”。FYI:不能把cookies域属性设置成与设置它的服务器的所在域不同的值。

  Secure – 安全。指定cookie的值通过网络如何在用户和WEB服务器之间传递。这个属性的值或者是“secure”,或者为空。缺省情况下,该属性为空,也就是使用不安全的HTTP连接传递数据。如果一个 cookie 标记为secure,那么,它与WEB服务器之间就通过HTTPS或者其它安全协议传递数据。不过,设置了secure属性不代表其他人不能看到你机器本地保存的cookie。换句话说,把cookie设置为secure,只保证cookie与WEB服务器之间的数据传输过程加密,而保存在本地的cookie文件并不加密。如果想让本地cookie也加密,得自己加密数据。


JSP中对Cookie的操作: 类型 方法名 方法解释
String getComment() 返回cookie中注释,如果没有注释的话将返回空值.
String getDomain() 返回cookie中Cookie适用的域名. 使用getDomain() 方法可以指示浏览器把Cookie返回给同 一域内的其他服务器,而通常Cookie只返回给与发送它的服务器名字完全相同的服务器。注意域名必须以点开始
int getMaxAge() 返回Cookie过期之前的最大时间,以秒计算。
String getName() 返回Cookie的名字
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读写中文

    在本文档中,我们探讨了如何在Java Web应用中解决Cookie读写中文的问题。这个问题通常出现在处理中文字符时,由于编码不一致导致的乱码问题。以下是一些关键知识点和解决方案: 1. **编码问题**:在Web开发中,特别...

    jsp(乘法表,聊天室,读写文件,猜数字游戏,检验用户登录)

    在JSP中,可以使用session和cookie来管理用户状态。用户提交用户名和密码后,服务器会验证这些信息是否匹配数据库中的记录。如果验证成功,会设置session或cookie以保持登录状态。这涉及到数据库连接、SQL查询和安全...

    JSP中常用的技巧.ppt

    - **Cookie共享**:Cookie是存储在客户端的数据,适用于存储用户特定信息,如用户名,通过`new Cookie("key", "value")`创建Cookie,`response.addCookie(cookie)`将其添加到响应中。 - **隐藏表单字段**:通过在...

    jsp 入门教材 非常不错

    Java程序片(scriptlet)是JSP页面中的一段Java代码,用于实现具体的业务逻辑。它们使用`&lt;% %&gt;`标记来表示。 **2.4 表达式** 表达式用于输出Java表达式的值到客户端。表达式使用`&lt;%= %&gt;`标记来表示。 **2.5 JSP中...

    Jsp教程(很全面)

    - **使用beans**:通过JSP动作标签,如useBean、getProperty和setProperty,实现在JSP页面中调用和操纵beans。 ##### 6.3 获取和修改beans的属性 - **getProperty动作标签**:从beans对象中获取属性值。 - **set...

    jsp简单数据库课程设计

    2. 数据库连接:在JSP中,我们需要通过Java的JDBC(Java Database Connectivity)API来连接数据库。这包括加载数据库驱动、创建Connection对象、Statement或PreparedStatement对象,以及执行SQL语句。 3. SQL基础:...

    jsp网站完整实例

    这可能需要使用到JSP表单元素、Servlet的请求处理以及对数据库的读写操作。 "访问量"统计通常需要记录每个页面的访问次数,可以使用session或cookie来实现简单的计数,或者通过日志分析来获取更精确的数据。在...

    基于jsp的bbs论坛 非常详细

    在BBS论坛中,用户信息、帖子内容、评论等数据都会存储在MySQL数据库中,通过SQL查询语句进行读写操作。 4. **Web应用架构**:通常,基于jsp的Web应用会采用MVC(Model-View-Controller)架构,模型层(Model)负责...

    JSP Oracle 网上商店 示例

    JSP和Servlet API提供了处理用户认证和授权的机制,如使用cookie或session进行身份验证,防止未授权访问。 7. **支付接口集成** 一个完整的网上商店系统还需要集成支付网关,如支付宝、PayPal等。这涉及API调用、...

    jsp 简易教程

    - **2.2.3 声明类**:允许在JSP页面中定义自定义类,增强页面的功能性和复用性。 - **2.3 Java程序片** - 在`&lt;% %&gt;`之间编写Java代码,这些代码会被直接执行。 - 可以用来执行复杂的逻辑处理。 - **2.4 表达式*...

    用jsp+servlet+javabean做的留言管理系统

    5. **数据库操作**:留言数据通常会存储在数据库中,因此系统可能涉及到SQL查询和JDBC(Java Database Connectivity)操作,用于读写留言记录。例如,Servlet可能会调用JavaBean的方法来执行INSERT、SELECT、UPDATE...

    JSP Servlet.pdf

    以上概述了《JSP Servlet.pdf》文件中提到的关键知识点和技术细节。JSP作为一项重要的Web开发技术,在实际应用中扮演着非常重要的角色。通过深入理解这些概念和技术,开发者能够更好地构建动态网页和Web应用程序。

    jsp教程.pdf

    - **2.2.3 声明类**:可以在JSP页面中定义一个完整的类,但通常不推荐这样做。 - **2.3 Java程序片** - `&lt;% %&gt;`之间的内容是Java程序片,可以用来执行Java代码,如设置变量值或调用方法。 - **2.4 表达式** - `...

    jsp教程+web+pdf

    - **使用JavaBeans**:在JSP页面中实例化和操作JavaBeans。 #### 九、基于会员制的网络交友系统 这是一个基于JSP和JavaBeans的会员制交友系统示例。 - **系统设计**:包括整体架构和模块划分。 - **数据库设计及...

    jsp免费教程

    - **使用beans**:在JSP页面中通过动作标签使用JavaBeans。 **6.2 beans的存放目录** - **beans的存放目录**:将JavaBeans类存放在WEB-INF/classes目录下。 **6.3 获取和修改beans的属性** - **getProperty动作...

    Java项目之音乐网站(JSP+SERVLET)源代码

    在Java中,这部分功能可能通过Servlet实现,处理文件的读写操作,并确保文件上传的合法性与安全性。 除此之外,项目可能还涉及到用户认证和授权机制,如session管理来跟踪用户状态,防止未授权访问。也可能采用了...

    jsp仿真试题C.pdf

    - 如果浏览器关闭了Cookie,可以在JSP中通过URL重写或隐藏表单字段来开启SESSION跟踪。 18. **作用域范围**: - 作用域从小到大排序:page、request、session、application。 19. **application对象**: - ...

    jsp实现网页计数器(防刷新计数和防刷新单用户计数)

    为了提高性能和可扩展性,可以考虑使用缓存(如Redis)来存储计数信息,利用其高并发读写能力。此外,还可以引入分布式计数器,比如Google的Bigtable或Hadoop的HBase,以支持大规模网站的访问统计。 通过上述方法...

    JSP教程(清晰版)

    这一章节主要讲解了如何在JSP中实现文件的读写操作,包括文件的基本操作、字节流和字符流的使用等。 **4.1 File类** - **获取文件的属性**:使用`length()`获取文件大小。 - **创建目录**:通过`mkdirs()`创建多级...

Global site tag (gtag.js) - Google Analytics