cookie和session

来源:互联网 发布:云顶酒店闹鬼 知乎 编辑:程序博客网 时间:2024/06/08 16:18

Servlet获取表单信息

  1. 通过HttpServletRequestgetParameter()方法来获得客户端传递过来的数据
  2. getParameter()方法返回一个字符串类型的值
  3. getParameterNames()返回Enumeration类型的值,getParameterValues()返回一个字符串数组
HTTP状态处理
由于HTTP是无状态的,所以可以使用Cookie来保存信息
  1. Http协议的无连接性要求出现一种保存C/S间状态的机制
  2. Cookie:保存到客户端的一个文本文件,与特定客户相关
  3. Cookie以“名-值”对的形式保存数据
  4. 创建Cookie:newCookie(name,value)
  5. 可以使用Cookie的setXXX方法来设定一些相应的值
setName(String name)/getName()
setValue(String value)/getValue()
setMaxAge(int age)/getMaxAge()
利用HttpServletResponse的addCookie(Cookie)方法将它设置到客户端
利用HttpServletRequest的getCookies()方法来读取客户端的所有Cookie,返回一个Cookie数组

Cookie

  1. 服务器可以向客户端写内容
  2. 只能是文本内容(4k)
  3. 客户端可以阻止服务器写入
  4. 只能拿自己webapp写入的东西
  5. Cookie分为两种(属于窗口/子窗口(放在内存中的),属于文本(有生命周期的))
  6. 一个servlet/jsp设置的cookies能够被同一个路径下面或者子路径下面的servlet/jsp读到(路径= URL)(路径 !=真实文件路径)
Session
  1. 在某段时间一连串客户端与服务器端的“交易”
  2. Jsp/Servlet中,如果浏览器不支持Cookie,可以通过URL重写来实现,就是将一些 额外数据追加到表示会话的每个URL末尾,服务器在该标示符与其存储的有关的该会话的数据之间建立关联。如hello.jsp?jsessionid=1234可以通过程序来终止一个会话。如果客户端在一定时间内没有操作,服务器会自动终止会话。
  3. 通过HttpSession来读写Session
  4. 如果浏览器支持Cookie,创建Session的时候会把SessionID保存在Cookie
  5. 如果不支持Cookie,必须自己编程使用URL重写的方式实现Session(response.encodeURL(),转码,URL后面加入SessionId)
  6. Session不象Cookie拥有路径访问的问题(同一个application下的servlet/jsp可以共享同一个session,前提是同一个客户端窗口)
HttpServletRequest中的Session管理方法
  1. getRequestedSessionId():返回随客户端请求到来的会话ID。可能与当前的会话ID相同,也可能不同。
  2. getSession(boolean isNew):如果会话已经存在,则返回一个HttpSession,如果不存在并且isNew为true,则会新建一个HttpSession
  3. isRequestedSessionIdFromCookie():当前的Session ID如果是从Cookie获得,为true
  4. isRequestedSessionIdFromURL():当前Session ID如果是由URL获得,为true
  5. isRequestedSessionIdValid():如果客户端的会话ID代表的是有效会话,则返回true。否则(比如,会话过期或根本不存在),返回false
  6. ³HttpSession的常用方法:
    getAttributeNames()/getAttribute()
    getCreateTime()
    getId()
    getMaxInactiveInterval()
    invalidate()
    isNew()
    setAttribute()
    setMaxInactivateInterval()
Session总结
服务器的一块内存(存key-value)
和客户端窗口对应(子窗口)(独一无二)
客户端和服务器有对应的SessionID
客户端向服务器端发送SessionID的时候两种方式:(cookie(内存cookie),rewriten URL
浏览器禁掉cookie,就不能使用session(使用cookie实现的session)
如果想安全的使用session(不论客户端是否禁止cookie),只能使用URL重写(大大增加编程负担),所以很多网站要求客户端打开cookie

Application
  1. 用于保存整个WebApplication的生命周期内都可以访问的数据
  2. 在API中表现为ServletContext
  3. 通过HttpServlet的getServletContext方法可以拿到
  4. 通过ServletContext的 get / setAttribute方法取得/设置相关属性





0 0
原创粉丝点击