JAVA中cookie的用法研究

JAVA中cookie用法

 

** 处理cookies

类型 方法名 方法解释
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所遵从的协议版本。

注意:cookies在网站浏览者的计算机中是以"名字/值"(name/value)对存储的,其中name和value在Cookies的构造函数中指定,每个name/value对都以name为标识,也就是说加入cookies的每个name/value对中的name不能相同(即便你value不同),否则后则会把前者覆盖掉。

 

在jsp中怎么使用Cookie?

一般来说有两种办法,在JSP中使用Java的嵌入脚本.
例如:
写入Cookie
<html>
<head>........(中间略)
</head>
<body>
<%
String cookieName="Sender";
Cookie cookie=new Cookie(cookieName, "Test_Content");
cookie.setMaxAge(10);
response.addCookie(cookie);
%>
........(其他内容)
</body>
</html>
这样我们就设置了一个Cookie.
仔细研究一下这段代码:
Cookie cookie=new Cookie(cookieName, "Test_Content");
这一行建立了一个Cookie对象,初始化有两个参数,第一个参数cookieName定义了Cookie的名字,后一个参数,也是一个字符串,定义了Cookie的内容。也就是我们希望网页在用户的机器上标识的文件内容。
接下来一行:cookie.setMaxAge(10),调用了Cookie中的setMaxAge方法,设定Cookie在用户机器硬盘上的存活期为10秒。一个Cookie在用户的硬盘里面存在的时间并不是无限期的,在建立Cookie对象的时候,我们必须制定Cookie的存活期,超过了这个存活期后,Cookie文件就不再起作用,会被用户的浏览器自行删除。如果我们希望用户在下次访问这个页面的时候,Cookie文件仍然有效而且可以被网页读出来的话,我们可以将Cookie的存活期设得稍微长一些。比如cookie.setMaxAge(365*24*60*60)可以让Cookie文件在一年内有效。

读出Cookie
Cookie文件创建好后,自然还需要我们把它读出来,否则我们不是白费力气吗?接下来我们看看如何读出在用户硬盘上的Cookie。
<html>
<head>........(中间略)
</head>
<body>
<table border=1>
<tr><td>Name</td><td>value</td></tr>
<%
Cookie cookies[]=request.getCookies();
Cookie sCookie=null;
String svalue=null;
String sname=null;
for(int i=0;i<cookies.length;i++)
{
sCookie=cookies[i];
svalue=sCookie.getValue();
sname=sCookie.getName();
%>
<tr><td><%=name%></td><td><%=svalue%></td></tr>
<%
}
%>
</table>
........(其他内容)
</body>
</html>
这一小段JSP文件可以读出用户硬盘上的所有有效的Cookie,也就是仍然在存活期内的Cookie文件。并用表格的形式列出每个Cookie的名字和内容。
我们来逐行分析一下这段代码:
Cookie cookies[]=request.getCookies() 我们用request.getCookies()读出用户硬盘上的Cookie,并将所有的Cookie放到一个cookie对象数组里面。
接下来我们用一个循环语句遍历刚才建立的Cookie对象数组,我们用sCookie=cookies[i]取出数组中的一个Cookie对象,然后我们用sCookie.getValue()和sCookie.getName()两个方法来取得这个Cookie的名字和内容。
通过将取出来的Cookie的名字和内容放在字符串变量中,我们就能对其进行各种操作了。在上面的例子里,可通过循环语句的遍历,将所有Cookie放在一张表格中进行显示。

通过上面两个简单的例子,可以看到,用JSP进行Cookie的操作,是非常简单的。不过我们在实际操作中还要注意一些问题:
1. Cookie的兼容性问题
Cookie的格式有2个不同的版本,第一个版本,我们称为Cookie Version 0,是最初由Netscape公司制定的,也被几乎所有的浏览器支持。而较新的版本,Cookie Version 1,则是根据RFC 2109文档制定的。为了确保兼容性,JAVA规定,前面所提到的涉及Cookie的操作都是针对旧版本的Cookie进行的。而新版本的Cookie目前还不被Javax.servlet.http.Cookie包所支持。
2. Cookie的内容
同样的Cookie的内容的字符限制针对不同的Cookie版本也有不同。在Cookie Version 0中,某些特殊的字符,例如:空格,方括号,圆括号,等于号(=),逗号,双引号,斜杠,问号,@符号,冒号,分号都不能作为Cookie的内容。这也就是为什么我们在例子中设定Cookie的内容为“Test_Content”的原因。
虽然在Cookie Version 1规定中放宽了限制,可以使用这些字符,但是考虑到新版本的Cookie规范目前仍然没有为所有的浏览器所支持,因而为保险起见,我们应该在Cookie的内容中尽量避免使用这些字符。

另一种方法是用Javascript脚本来操作Cookie

两种方法操作Cookie的具体方法可以这样查到:
在baidu中搜索关键字:JSP Cookie或是Javascript Cookie即可看到你想要的信息.

 

jsp使用cookie实现记住密码的功能

 

jsp使用cookie实现记住密码的功能,代码怎么写的。这个问题困扰我很长时间了,请高手帮帮我。在登陆界面,如果用户点击记住密码复选框,在下次打开登录界面时候用户名和密码不用输入,已经在文本框中!请高手一定要帮帮我,我真的很急。先谢谢大家了!

 

1.       这个一个页面模拟的cookie,如果你要实现登录,当用户输入用户名密码时,到控制层用
Cookie user = new Cookie("user",name+"-"+passward);
加到cookie中,然后在访问此登录页面时,就先调用
Cookie[] cookies=request.getCookies(); 看cookie中是否有user这个值,如果有就取得用户名、密码。
代码示例:
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%
String name="nihao";
String passward="nihao";
try{
Cookie user = new Cookie("user",name+"-"+passward);
user.setMaxAge(60);
response.addCookie(user);
Cookie[] cookies=request.getCookies();
if(cookies!=null){
for(int i=0;i<cookies.length;i++){
if(cookies[i].getName().equals("user")){
name=cookies[i].getValue().split("-")[0];
passward=cookies[i].getValue().split("-")[1];
request.setAttribute("name",name);
request.setAttribute("pass",passward);
}
}
}
}catch(Exception e){
e.printStackTrace();
}

%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title></title>

<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->

</head>

<body>
<form action="test10.jsp" method="post">
<input type="text" value="${name}" name=name /></br>
<input type="text" value="${pass}" name=pass />
<input type="submit" value="提交">
</form>
</body>
</html>

 

将用户名和密码保存在COOKIE中(JSP)怎么写源代码

保存到cookie
Cookie cookie=new Cookie("name","value");
Cookie cookiep=new Cookie("mima",pass);
cookie.setMaxAge(10*60); //设置过期之前的最长时间
cookiep.setMaxAge(10*60);
response.addCookie(cookie);
response.addCookie(cookiep);
读取cookie
Cookie Cookies[]=request.getCookies();
if(Cookies==null)
out.print("还没有cookie值");
else
{
for(int i=0;i < Cookies.length;i++)
out.print(Cookies[i].getName()+"="+Cookies[i].getValue()+"<br>");
from:http://blog.sina.com.cn/s/blog_6159d51a0100g253.html

 

(二)part two

防止点击后退键 导致的表单重复提交(jsp实现)
2009-10-13 18:40

 

<!-------------index.jsp------------------>

<%@ page language="java" import="" pageEncoding="GBK"%>
<html>
<head>
</head>

<body>
<%
Cookie cookies = new Cookie("c","123");
session.setAttribute("s","123");
response.addCookie(cookies);
   %>
    <form action="second.jsp" method="post">
    <input type="text" name="name">
    <input type="submit">
    </form>
</body>
</html>

<!--------------------------second.jsp------------------------>

<%@ page language="java" import="" pageEncoding="GBK"%>

<html>
<body>
<%
    String name=""; //定义接收的变量
    Cookie[] cookies = request.getCookies(); //获得cookie
    String comp1=""; //定义变量 被cookie赋值
    String comp2=""; //定义变量 被session赋值
    comp2=session.getAttribute("s").toString(); //得到session的值
    if(cookies!=null){  
        for (int i = 0; i < cookies.length; i++) {
          Cookie c = cookies[i];
          if(c.getName().equalsIgnoreCase("c")){ //得到cookie的值
            comp1=c.getValue();
            }
        }
    }
    if(comp1.equals(comp2)){ //如果两个值一致,那么改变session中的值,并正常打开页面
     session.setAttribute("s","456");
     name=request.getParameter("name");
      }else{//如果两个值不一致,跳转到失败页面
       response.sendRedirect("error.jsp");
      }
%>
<%=name%> <!-- 显示获取的值 -->
</body>
</html>
<!----------------------------------------error.jsp--------------------------------------->

<html>
<head>
</head>
<body bgcolor="gray">
    Wrong!
</body>
</html>

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值