Servlet基础(二)

原创 2004年09月17日 23:55:00

,会话跟踪

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

 问题的出现:一个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

?<?xml:namespace prefix = o />

 

Java 之JNI基础篇(一)

JNI,即Java Native Interface。它其实就是一套java与本地代码交互的接口或者说是一个协议。通俗的比喻,就是中国人讲中国话,日本人讲日本话,于是中国人碰到日本人,各说各话,无法交...
  • yingshukun
  • yingshukun
  • 2018年01月13日 18:51
  • 10005

servlet必知细节(二)--servlet执行过程

servlet必知细节(二)--servlet执行过程   我们知道,servlet没有main函数,那么,servlet是怎么调用的呢?   实际上,servlet 是由tomcat调用的,tomc...
  • u012814506
  • u012814506
  • 2015年04月16日 16:39
  • 555

Servlet系列(二)----Servlet基础

Servlet的创建主要有三种方法 1、 实现Servlet接口。 2、 继承GenericServlet类。 3、 继承HttpServlet类。 一个Servlet对象的正常运行需要进行适当的配置...
  • u011740475
  • u011740475
  • 2014年08月27日 21:11
  • 348

用ajax+servlet实现二级联动(以省份与城市为例)

1.实现思路:    在下拉列表框中编写js函数触发onchange事件,在这js函数中将选中的name值通过ajax传给后台servlet,在servlet中通过request.getParamet...
  • zxingchao2009
  • zxingchao2009
  • 2010年08月16日 00:19
  • 5757

Servlet入门总结及第一个Servlet程序

Servlet定义:Servlet是基于Java技术的Web组件,由容器管理并产生动态的内容。Servlet引擎作为WEB服务器的扩展提供支持Servlet的功能。Servlet与客户端通过Servl...
  • Evankaka
  • Evankaka
  • 2015年04月20日 17:26
  • 31169

Servlet基础总结

1.什么是servlet? 首先先有servlet再有jsp,servlet是在服务器上运行的小程序,一个servlet就像Java类,并且可以通过“请求”-“响应”编程模型来访问的这个驻留在服务器...
  • BobZhangfighting
  • BobZhangfighting
  • 2016年03月19日 19:53
  • 233

servlet基础梳理(二)

接上一篇,servlet应该可以看做是一个实现了Servlet接口的普通的java类,只是对其进行调用的时候,我们不要自己对其进行创建化。它的创建,调用,销毁都是servlet容器进行的,我们不要自己...
  • js_sky
  • js_sky
  • 2015年03月15日 21:22
  • 379

JSP基础:二、Servlet

Server--Servlet 一、复习  JSP---Servlet  JSP本质就是一个Servlet,加载到虚拟机时候翻译成Java程序。 二、新内容 Servlet       jav...
  • zxcvb12zxcvb12
  • zxcvb12zxcvb12
  • 2018年01月09日 09:49
  • 43

6Java Servlet基础

Java Servlet技术的核心就是在服务端创建能响应用户请求的对象,被创建的对象习惯上称为一个Servlet对象。 编写一个创建servlet对象的类就是编写一个特殊类的子类,这个特殊的...
  • bin71722
  • bin71722
  • 2016年07月15日 10:43
  • 308

Java 之JNI基础篇(二)

上一篇完成了JNI流程的编写,现在来看看javah命令生成的本地方法 #include #include #include "Hello.h" JNIEXPORT void JNICALL...
  • yingshukun
  • yingshukun
  • 2018年01月21日 14:11
  • 9907
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Servlet基础(二)
举报原因:
原因补充:

(最多只允许输入30个字)