第7章 Servlet技术.ppt

* UnavailableException类 两个构造函数 public UnavailableException(String msg) public UnavailableException(String msg, int seconds) 第一个构造函数接受的消息描述servlet不可用的问题 第二个构造函数中的消息与第一个是一样的, seconds代表该servlet预计不可用的时间有多少秒,零或负数表示无法估计 永久不可用 Servlet配置中出现错误或者网络不可访问,应该用第一个构造函数 临时不可用 过分的网络拥堵或者过重的服务器负载,应该用第二个构造函数 高级Servlet API * 主要内容 网络技术基础 Servlet基础 基本Servlet API 高级Servlet API ServletInputStream类 ServletOutputStream类 ServletConfig接口 ServletContext接口 ServletException类 UnavailableException类 HttpSession类 * 会话概念 会话 服务器应当能够标识出来自单个客户的一系列请求,而把他们组成一个单个的工作“会话” 会话对象 是由一个接口来定义的,这个接口就是HttpSession 接口 会话对象代表了客户与服务器之间的会话,在客户与服务器之间的连接断开后,会话对象也会存在一段时间,会话对象可以存储客户端信息 如果客户在这段时间内再次与服务器建立起连接,服务器器就会根据ID识别出客户,并从会话对象中取出客户信息 高级Servlet API * 会话生命周期 当客户第一次与服务器连接时,服务器为客户创建一个新的会话对象,并为会话对象生成一个惟一的ID,称这个ID为会话ID 当服务器处理完请求后,会将在生成的响应中将会话ID加入响应中去,与其它信息一直返回客户端 服务器会为客户端保存这个会话对象一段时间 一般默认为3600秒,超过这个时间后,会话对象将会被收回 客户端下一次访问服务器时,会在请求头中加入会话ID,服务器就会根据报头中的ID找到相应的会话对象为客户端服务 高级Servlet API * 会话生命周期 客户也可以主动结束会话,例如 HttpSession oldSess = request.getSession(false); If (oldSess != null) { oldSess.invalidate(); } HttpSession session = request.getSession(true); 通常调用HttpServletRequest请求对象的getSession方法得到会话对象,但并不一定生成新的会话对象 getSession方法首先在请求对象中查找客户发来的HTTP公共报头中有没有包含会话标识符 如果找到了标识符,则根据这个标识符找到相应的会话对象返回给用户 如果没有找到,则生成一个新的会话对象,并赋给它一个新的且惟一的标识符 高级Servlet API * Servlet会话 状态 服务器应当能够记住与前面的请求和为请求所做的其他商业决策相关的信息 有状态协议 在客户和服务器之间的单个网络连接上发送多个客户请求和应答 HttpSession接口 javax.servlet.http.HttpSession接口 HttpSession类似于哈希表的接口,它提供了setAttribute()和getAttribute()方法存储和检索对象 HttpSession提供了一个会话ID关键字,一个参与会话行为的客户端在同一会话的请求中存储和返回它 servlet引擎查找适当的会话对象,并使之对当前请求可用 高级Servlet API * Servlet会话 HttpSession接口的方法 Object?getAttribute(String?name) void?setAttribute(String?name,Object?value)?? void?removeAttribute(String?name) Enumeration?getAttributeName() 返回捆绑到当前会话的所有属性名的枚举值 long?getCreationTime() 返回表会话创建和最后访问日期及时间的一个长整型 该整型形式为java.util.Date()构造器中使用的形式 long?getLastAccessedTime()? String?getId() 返回会话ID,servlet引擎设置的一个唯一关键字 高级Servlet API * Servlet会话 HttpSession接口的方法(续) int?getMaxInactiveInterval()

文档评论(0)

1亿VIP精品文档

相关文档