Chinaunix首页 | 论坛 | 博客
  • 博客访问: 29423645
  • 博文数量: 2065
  • 博客积分: 10377
  • 博客等级: 上将
  • 技术积分: 21525
  • 用 户 组: 普通用户
  • 注册时间: 2008-11-04 17:50
文章分类

全部博文(2065)

文章存档

2012年(2)

2011年(19)

2010年(1160)

2009年(969)

2008年(153)

分类: Java

2009-01-06 11:39:54

定义一个session变量 
session.setAttribute("user_name","joan"); 

读取一个session的值: 
String your_name=session.getAttribute("user_name"); 

判断一个session是否存在应用: 
if((String)session.getAttribute("user_id")==null) 

out.print("yes"); 

else 

out.print("no"); 



写入一个cookie的方法(要用三个语句): 
Cookie thecookie=new Cookie("user_name",user_name); 
thecookie.setMaxAge(60*60*24*365); 
response.addCookie(thecookie); 

读取一个cookie的值(JSP这个功能有点麻烦) 
Cookie[] cookies = request.getCookies(); 

for (int i = 0; i < cookies.length; i++) { 

Cookie c = cookies[i]; 
if(c.getName().equals("user_id")) 

String aa=c.getValue(); 
out.print(aa); 



}
Httpsession具有如下API:

  getId 此方法返回唯一的标识,这些标识为每个session而产生。当只有一个单一的值与一个session联合时,或当日志信息与先前的sessions有关时,它被当作键名用。

  GetCreationTime 返回session被创建的时间。最小单位为千分之一秒。为得到一个对打印输出很有用的值,可将此值传给Date constructor 或者GregorianCalendar的方法setTimeInMillis。

  GetLastAccessedTime 返回session最后被客户发送的时间。最小单位为千分之一秒。

  GetMaxInactiveInterval 返回总时间(秒),负值表示session永远不会超时。

  getAttribute 取一个session相联系的信息。(在jsp1.0中为 getValue)

  Integer item = (Integer) session.getAttrobute("item") //检索出session的值并转化为整型

  setAttribute 提供一个关键词和一个值。会替换掉任何以前的值。(在jsp1.0中为putValue)

  session.setAttribute("ItemValue", itemName); // ItemValue 必须不是must简单类型
5、Session对象

当用户登陆网站,系统将为他生成一个独一无二的Session对象,用以记录改用户的个人信息
,一旦改用户退出网站,那么该Session对象将会注销。Session对象可以绑定若干个人信息或
者Java对象,不同Session对象的同名变量是不会相互干扰的。

getValue(String name)、putValue(String name)、removeValue(String name)、getValueNames()
、getCreationTime()、getId()、getLastAccessedTime()、getMaxInactiveInterval()、
setMaxInactiveInterval()方法:
其中的getId()可以得到一次会话的sessionID值了!

OK,来看看如何通过JSP来写Cookie吧!


如何检查一个客户端是否支持COOKIE的方法:
用下面的方法写一个COOKIE到客户端,并确认成功
try
{
Cookie c = new Cookie("mycookie","COOKIE TEST");
response.addCookie(c);
}
catch(Exception e)
{
      System.out.println(e);
}


然后在一个新的JSP文件中:用下面的方法取客户端的COOKIE到cookies中, 如果cookies.length ==0,说明该客户端的浏览器不支持COOKIE
try
{
Cookie[] cookies = request.getCookies();
if(cookies.length ==0)
{
      System.out.println("not support cookie");
}
}
catch(Exception e)
{
      System.out.println(e);
}

使用这两个方法可以指示浏览器把Cookie返回给同一 域内的其他服务器。注意域必须以点开始(例如.sitename.com),非国家类的域(如.com,.edu,.gov)必须包含两个点,国家类的域 (如.com.cn,.edu.uk)必须包含三个点,一般地,Cookie只返回给与发送它的服务器名称完全相同的服务器。

  getMaxAge()/setMaxAge():获取/设置Cookie过期之前的时间,以秒计。如果不设置该值,则Cookie只在当前会话内有效,即在用户关闭浏览器之前有效,而且这些Cookie不会保存到磁盘上。

  getName()/setName():获取/设置Cookie的名称。本质上,名称和值是需要 程序员始终关心的两个部分。由于HttpServletRequest的getCookies方法返回的是一个Cookie对象的数组,因此通常要用循环 语句来访问这个数组并查找特定名称,然后用getValue()检查它的值。

  getPath()/setPath():获取/设置Cookie适用的路径。如果不指定路 径,Cookie将返回给当前页面所在目录及其子目录下的所有页面。这里的方法可以用来设定一些条件。例 如,someCookie.setPath("/"),此时服务器上的所有页面都可以接收到该Cookie。

  getSecure()/setSecure():获取/设置一个boolean值,该值表示Cookie是否只能通过加密的连接(即SSL)发送。

  getValue()/setValue():获取/设置Cookie的值。如前所述,名称和值实际上是程序员始终关心的两个方面。不过也有一些例外情况,比如把名称作为逻辑标记(也就是说,如果该名称存在,则表示true)。

  getVersion()/setVersion():获取/设置Cookie所遵从的协议版本。默认版本0(遵从原先的Netscape规范);版本1遵从RFC 2109,但尚未得到广泛的支持。

1. 写入Cookie --- writecookie.jsp
-------------------------------------------------------------
<%@ page contentType="text/html; charset=ISO8859_1" %>
<%
  Cookie _cookie=new Cookie("user_delfancom", "delfan");
  _cookie.setMaxAge(30*60); // 设置Cookie的存活时间为30分钟
  response.addCookie(_cookie); // 写入客户端硬盘
  out.print("写Cookie完成");
%>

<%
  Cookie cookies[]=request.getCookies(); // 将适用目录下所有Cookie读入并存入cookies数组中
  Cookie sCookie=null; 
  String sname=null;
  String name=null;
  if(cookies==null) // 如果没有任何cookie
    out.print("none any cookie");
  else
  {
    out.print(cookies.length + "
");
    for(int i=0;i    {
      sCookie=cookies[i];
      sname=sCookie.getName();
      name = sCookie.getValue();
      out.println(sname + "->" + name + "
");
    }
  } 
%>


  ……(中间略)
  
  
  


  

  <%
  Cookie cookies[]=request.getCookies();
  Cookie sCookie=null;
  String svalue=null;
  String sname=null;
  for(int i=0;i  {
  sCookie=cookies[i];
  svalue=sCookie.getValue();
  sname=sCookie.getName();
  %>
  

  <%
  }
  %>
  
Namevalue
<%=sname%><%=svalue%>
……(其他内容)
  
  

[如何通过循环进行取出来cookie中的值]

<%
 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);
%>



阅读(1044) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~