【Head First Servlets and JSP】笔记14:session再探 & Listener示例

 对于session的“CRUD”

会话迁移

别忘了HttpSessionBindingListener

Listener示例

 

1、session的“增”与“删”——session的创建和撤销的调用主体是服务端。

 

2、session的“改”——由各个servlet执行

 

3、那么session的“查找”呢?——依赖于客户端发来的JSESSIONID,以及服务端调用getSession()

 

4、会话迁移

  1.  很重要的一句话——HttpSession只有一个!不论有多少个VM。
  2. 迁移的发生:负载平衡服务器接到一个会话id为1的请求,把它交给容器1,结果容器1发现会话id为1的那个session在容器2中,迁移就开始了...
  3. 迁移的意味:在起点vm上“钝化”,在终点vm上激活。

 具体方法暂略。

 

5、别忘了HttpSessionBindingListener

 

6、Listener示例

跟踪Web应用中的活动会话个数。

package com.example;

import javax.servlet.http.HttpSessionEvent;
import javax.servlet.http.HttpSessionListener;

public class BeerSessionCounter implements HttpSessionListener {

    static private int activeSessions;

    public static int getActiveSessions() { // 其它servlet、辅助类可以访问!
        return activeSessions;
    }

    @Override
    public void sessionCreated(HttpSessionEvent httpSessionEvent) {
        ++activeSessions;
    }

    @Override
    public void sessionDestroyed(HttpSessionEvent httpSessionEvent) {
        --activeSessions;
    }
}
<?xml version="1.0" encoding="ISO-8859-1" ?>

<web-app xmlns="http://java.sun.com/xml/ns/j2ee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
         version="2.4">

    <servlet>
        <servlet-name>Ch3 Beer</servlet-name>
        <servlet-class>com.example.web.BeerSelect</servlet-class>
    </servlet>

    <servlet-mapping>
        <servlet-name>Ch3 Beer</servlet-name>
        <url-pattern>/SelectBeer.do</url-pattern>
    </servlet-mapping>
    
    <listener>
        <listener-class>
            com.example.BeerSessionCounter
        </listener-class>
    </listener>

</web-app>

 

posted @ 2017-06-09 09:41  xkfx  阅读(224)  评论(0编辑  收藏  举报