Session机制

回到首页☞

Session是服务器端记录客户端状态的机制,使用上比Cookie简单,相应的增加了服务器的存储压力。

1、什么是Seesion

客户端访问服务器,会以某种方式把访问状态记录在服务器上,再次向服务器发送请求的时候就可以从Session中获取该客户的状态了。

2、实现用户登录

Session对应的类为 java.servlet.http.HttpSession 类。Session对象是在客户端第一次请求服务器的时候创建的。
Session也是key-value的属性对,通过getAttribute(String key)和setAttribute(Sring key,Object value)方法读写客户端状态信息。

<center>
    <h1>
      <%
      HttpSession session1 = request.getSession();
      session1.setAttribute("loginTime",new Date());
      out.println((Date)session.getAttribute("loginTime"));
      %>


    </h1>

</center>

上面这段代码只是替代servlet测试,其实jsp内置了session直接获取即可。

3、Session的生命周期

Session是保存在服务器的内存中,所有不要保存太复杂太大的数据,当大量用户同时访问的时候会爆掉。
用户第一次访问的时候自动创建,访问静态资源不会创建,也可以通过request.getSession(true)强制创建。
之后多次请求都会使用同一个session对象,只是不停的更新,当浏览器关闭的时候session失效。

4、session有效期

getMaxInactiveInterval 属性确定,可以通过set、get操作,也可以在web.xml中修改。
void invalidate();方法也可以使session失效。

5、Session常用方法

看下源码就行了,方法比较少。

public interface HttpSession {
  long getCreationTime();

  String getId();

  long getLastAccessedTime();

  ServletContext getServletContext();

  void setMaxInactiveInterval(int var1);

  int getMaxInactiveInterval();

  /** @deprecated */
  HttpSessionContext getSessionContext();

  Object getAttribute(String var1);

  /** @deprecated */
  Object getValue(String var1);

  Enumeration<String> getAttributeNames();

  /** @deprecated */
  String[] getValueNames();

  void setAttribute(String var1, Object var2);

  /** @deprecated */
  void putValue(String var1, Object var2);

  void removeAttribute(String var1);

  /** @deprecated */
  void removeValue(String var1);

  void invalidate();

  boolean isNew();
}

Tomcat默认超时时间是20分钟,可以通过web.xml配置,单位是分钟

<session-config>
    <session-timeout>30</session-timeout>
    <cookie-config>
        <name>JSESSIONID</name>
        <domain>example.org</domain>
        <path>/shop</path>
        <comment>
            <!-- some information -->
        </comment>
        <http-only>true</http-only>
        <secure>false</secure>
        <max-age>1800</max-age>
    </cookie-config>
    <tracking-mode>COOKIE</tracking-mode>
    <tracking-mode>URL</tracking-mode>
    <tracking-mode>SSL</tracking-mode>
</session-config>

6、Session对浏览器的要求

Session是保存在服务器端的客户端状态,所以需要客户端浏览器的支持。
Session需要使用Cookie作为识别标志。服务器需要向客户端发送一个名JSESSIONID的Cookie,它用这个id来判断是否为同一用户。
如果浏览器禁用Cookie或者不支持怎么办,Java Web提供了另一种解决方案,URL地址重写。

7、URL地址重写

说白了就是把JSESSIONID写在URL上,如果有需要这个后续再补充。

回到首页☞

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值