CSDN博客

img LSMXCOOL

Servlet基础(二)

发表于2004/9/17 23:55:00  1330人阅读

,会话跟踪

  会话:从网络服务器的观点看,一个会话包含单个浏览器调用期间进行的所有请求,换句话说,当我们打开浏览器时,会话开始,关闭浏览器时,会话结束。

 问题的出现:一个servlet是供大家使用的,不可能供某一个客户端单独使用,也可以说它是无状态的(不能存储单个客户端的信息),它供多个client调用(访问),而问题的出现是需要存储每个client自己特征的信息(如电子商城的购物车)。

问题的解决:

第一:使用每个clientip地址来区别他们吗?不能,因为可能多个客户在一台机器上运行,而请求也可能是通过代理服务器路由,在这两种情况下,IP地址都不能做为唯一标识符。

第二:Cookie存储或URL重写

Cookie是能够嵌入到HTTP请求或响应中的一段数据,也可以这么理解,它是在client内存或硬盘中的一个文本文件或者说就是一个字符串,它最初由Netscape公司引入的。一种典型的情形是,WEB服务器在一个响应头中嵌入cookie值,浏览器将在每一个子请求中返回相同的cookie值。

一些有用的代码:

cookie cookies[]=myhttprequest.getCookies();//返回的是一个cookie数组

 cookie c=cookies[i];

 String myName=c.getName();

 String myValue=c.getValue();

 String myComment =c.getComment();//返回这个cookie目的的注释??

 Int myMaxAge =c.getMaxAge();//返回这个cookie的最大有效期,采用秒进行规定,缺省情况下,-1指出cookie将会一直存在到浏览器会话终止。

URL重写:对一些特殊的用户或不支持cookie的浏览器,我们不得不使用URL重写技术,由servlet创建的所有衔接和重定位必须编码,以会话ID作为URL的一部分。URL编码的方法依据特定服务器而定,但是最可能采用增加参数或额外路径信息的方式。

String url=myhttpRequest.getRequestURI();

MyHttpResponse.encodeURL(url);

二,Servlet API

1,? 接口名称:javax.servlet.HttpServletRequest

方法:

 public String getAuthType();//返回用来保护servlet的认证模式的名称。
 Public Cooki getCookis();//返回一个数组,它包含客户随这个请求发送的所有   cookie对象,如没有cookie则返回NULL.
 Public String getMethod();//返回处理这个请求的Http方法的名称,如GET,POST,PUT
 Public String getQueryString();//返回路径之后的请求URL中包含的查询字符串。
 Public HttpSession getSession(boolean);//返回与这个请求相关联的当前HttpSession,或者如果没有当前会话,而创建标识为true,就返回新的会话。如果创建标识为false,而且请求中没有有效的HttpSession,这个方法就返回空值。

2, 接口名称:javax.servlet.http.HttpSession;

方法:

public long getCreationTime();
public string getId();
//返回赋予这个会话的唯一标识的字符串。这个标识符可以由servlet容器指定,会依赖以现实。
Public long getlastAccessedTime();
//返回客户发送与这个会话相关联的请求的最后时间。
Public ServletContext getServletContext();
//返回这个会话所属的上下文环境。
Public java.lang.Object getAttribute(java.lang.string);
Public java.util.Enumeration getAttributeNames();
Public void serAttribute(String,Object);
Public void removeAttribute(String);
Public void invalidate();
//使这个会话无效,然后删除它所绑定的属性。

public long

?

 

0 0

相关博文

我的热门文章

img
取 消
img