• Servle中的会话管理


    最近整理了下会话管理的相关笔记,以下做个总结:

    一、会话管理(HttpSession)

    1、Web服务器跟踪客户状态的四种方法:

    1)、使用Servlet API的Session机制(常用)

    2)、使用持久的Cookie对象;

    3)、使用URL重写机制;

    4)、使用隐藏的表单域;

    2、会话:一个客服与服务器之间的不中断请求相应序列。

    3、会话管理机制:

    1)、第一次请求时,由于不包含任何的会话ID,服务器为该客户创建一个HttpSession对象,并指定一个唯一的会话ID;

    2)、响应时,将会话ID与相应一起发送给客户,通过Set-Cookie相应头实现;

    3)、客户收到相应,将会话ID存储在内存中,当再次请求时,通过Cookie请求头把会话ID与请求一起发送过去;

    4)、服务器收到请求并看到会话ID,将查找之前创建的会话对象,并将该请求会话ID相同的会话对象关联。

    4、HttpSession接口:

    1)、public String getId():返回该会话指定唯一标识符;

    2)、public long getCreationTime():返回会话创建的时间;

    3)、public long getLastAccessedTime():返回会话对象最后被访问的时间;

    4)、public boolean isNew():若会话对象未与任何对象关联,返回true;

    5)、public ServletContext getServletContext():返回会话所属的ServletContext对象;

    6)、public void SetAttribute(String name,Object value):将制定的一个名称和值的属性绑定到会话对象;

    7)、public Object getAttribute(String name):返回绑定到会话对象上制定名称的属性值;

    8)、public Enumeration getAttributeNames():返回绑定到会话上的属性名的Enumeration对象;

    9)、public void removeAttribute(String name):从会话对象中删除绑定的指定名称的属性。

    5、使用Httpsession对象:

    1)、为客户创建或获得与请求关联的会话对象;

    2)、在会话对象中添加或删除键值对属性;

    3)、如需要可以使会话失效;

    public HttpSession getSession(boolean create):返回与当前请求关联的HttpSession对象,若没有则创建一个新的会话对象;

    public HttpSession getSession():等价于getSession(true);

    public void setMaxInactiveInterval(int interval):设置在容器中会话失效前客户的两个请求之前最大间隔秒数,负数则永不失效;

    public int getMaxInactiveInterval():返回以秒为单位的最大间隔时间;

    public void invalidate():使会话失效 并解除绑定到其上的任何对象

    二、通过Cookie支持会话  (服务器在客户硬盘上存放的一小段文本信息)

    1、Cookie API

    1)、public Cookie(String name,String value):name为cookie的名称,value为cookie的值;(Cookie的构造方法)

    2)、public String getName():返回Cookie名称,一旦创建不能改变;

    3)、public String getValue():放回Cookie的值; 

    4)、public void serValue():为Cookie制定新的值;

    5)、public void setMaxAge(int expiry):设置Cookie在浏览器最长的存活时间,负值表示不删除,0则表示直接删除;

    6)、public int  getMaxAge():返回最长存活时间;

    7)、public void setDomain():设置Cookie所在域;

    8)、public void getDomain():返回Cookie所在域;

    Coolie管理会话包含两个方面:将Cookie发送到客户端、从客户端读取Cookie。

    2、向客户端发送Cookie

    1)、创建Cookie对象

    Cookie userCookie = new Cookie(“user”,“伫望碧落”);

    2)、设置Cookie最大存活时间

    userCookie.setMaxAge(60*60*24*7);

    3)、向客户端发送Cookie

    response.addCookie(userCookie);

    3、从客户端读取Cookie

    1)、调用请求对象的getCookie方法

    Cookie[] cookies = request.getCookies();

    2)、对Cookie数组循环遍历,查找对应的Cookie

    三、URL重写与隐藏表单域

    1、URL重写:当用户单击URL时,会话ID被自动作为请求行的一部分而不是作为头行发送到服务器

    1)、public String encodeURL(String url):返回带会话ID的URL,主要用于Servlet发出的一般的URL;

    2)、public String encodeRedirectURL(String url):返回带会话ID的URL,主要用于SendRedirect()方法的URL进行解码;

    3)、注意事项:

    (1)、应在应用程序的所有页面中,对所有的URL编码,包括多有的超链接和表单Action属性;

    (2)、所有页面的都应该为动态;

    (3)、多有静态HTML页面必须通过Servlet运行,在它将页面发送给用户时重写URL;

    2、隐藏表单域

    <input type="hidden" name="zhuwangbiluo" />

    仅支持由表单提交而动态生成时使用


    出处:http://blog.csdn.net/cl05300629/article/details/9338693 作者:伫望碧落

  • 相关阅读:
    Qt环境搭建(Visual Studio)
    HTML基础
    关于Qt
    I am back
    Node Security
    Mobile Assistant
    Home Server
    抉择-什么最重要
    在一个JSP页面中包含另一个JSP页面的三种方式
    JS控制DIV隐藏显示
  • 原文地址:https://www.cnblogs.com/jiangu66/p/3194007.html
Copyright © 2020-2023  润新知