【Head First Servlets and JSP】笔记14:session再探 & Listener示例
1、session的“增”与“删”——session的创建和撤销的调用主体是服务端。
2、session的“改”——由各个servlet执行
3、那么session的“查找”呢?——依赖于客户端发来的JSESSIONID,以及服务端调用getSession()
4、会话迁移
- 很重要的一句话——“HttpSession只有一个!”不论有多少个VM。
- 迁移的发生:负载平衡服务器接到一个会话id为1的请求,把它交给容器1,结果容器1发现会话id为1的那个session在容器2中,迁移就开始了...
- 迁移的意味:在起点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>
【Head First Servlets and JSP】笔记14:session再探 & Listener示例的更多相关文章
- 【Head First Servlets and JSP】笔记23:Expression Language(EL) 完全攻略
基本上是<Head First Servlets and JSP>内容的整理.扩充.顺便推荐一个供参考的JSP教程:JSP Tutorial内容很全面,还有一些有趣的实例. 完整代码参考 ...
- 【Head First Servlets and JSP】笔记2:MVC迷你教程
1.采用MVC,不仅要求业务逻辑和表示分离.实际上,业务逻辑甚至根本不知道表示的存在.MVC的关键是,业务逻辑要与表示分离,而要求在中间放上别的东西,这样业务逻辑本身就可以作为一个可以重用的Java类 ...
- mybatis学习笔记(14)-查询缓存之中的一个级缓存
mybatis学习笔记(14)-查询缓存之中的一个级缓存 标签: mybatis mybatis学习笔记14-查询缓存之中的一个级缓存 查询缓存 一级缓存 一级缓存工作原理 一级缓存測试 一级缓存应用 ...
- webpy使用笔记(二) session/sessionid的使用
webpy使用笔记(二) session的使用 webpy使用系列之session的使用,虽然工作中使用的是django,但是自己并不喜欢那种大而全的东西~什么都给你准备好了,自己好像一个机器人一样赶 ...
- Ext.Net学习笔记14:Ext.Net GridPanel Grouping用法
Ext.Net学习笔记14:Ext.Net GridPanel Grouping用法 Ext.Net GridPanel可以进行Group操作,例如: 如何启用Grouping功能呢?只需要在Grid ...
- SQL反模式学习笔记14 关于Null值的使用
目标:辨别并使用Null值 反模式:将Null值作为普通的值,反之亦然 1.在表达式中使用Null: Null值与空字符串是不一样的,Null值参与任何的加.减.乘.除等其他运算,结果都是Null: ...
- JAVA自学笔记14
JAVA自学笔记14 1.正则表达式 1)是指一个用来描述或者匹配一系列符合某个句法规则的字符串的单个字符串.其实就是一种规则.有自己的特殊应用 2)组成规则: 规则字符在java.util.rege ...
- golang学习笔记14 golang substring 截取字符串
golang学习笔记14 golang substring 截取字符串golang 没有java那样的substring函数,但支持直接根据 index 截取字符串mystr := "hel ...
- JSP中,EL表达式向session中取出一个attribute和JSP脚本访问session取出一个attribute,写法有何不同?(转自百度知道)
EL表达式使用起来会更简洁,假如session中有一个属性A(attrA),那么EL和jsp脚本取值的方式如下: EL表达式:${ sessionScope.attrA } JSP脚本:<%=s ...
随机推荐
- windows下安装JDK和Tomcat
一.安装JDK 1.安装 JDK当前最高版本为1.7. 下载并运行JDK 1.7安装程序jdk-7u25-windows-i586.exe,直接安装到C盘(也可以在其它盘,但文件名一定要是英文名),其 ...
- Linux Linux程序练习一
注意:在Linux中,"*"是一个通配符,代表所有字符,所以"*"必须要使用转义字符"\"
- AI for AI
1.Li, Ke, and Jitendra Malik. "Learning to optimize." arXiv preprint arXiv:1606.01885 (201 ...
- Servlet 自动刷新页面
假设有一个网页,它是显示现场比赛成绩或股票市场状况或货币兑换率.对于所有这些类型的页面,您需要定期刷新网页. Java Servlet 提供了一个机制,使得网页会在给定的时间间隔自动刷新. 刷新网页的 ...
- 有向图 加最少的边 成为强连通分量的证明 poj 1236 hdu 2767
poj 1236: 题目大意:给出一个有向图, 任务一: 求最少的点,使得从这些点出发可以遍历整张图 任务二: 求最少加多少边 使整个图变成一个强连通分量. 首先任务一很好做, 只要缩点 之后 求 ...
- 修改hadoop配饰文件文件后导致hive无法找到原有的dfs文件
修改了hadoop/etc/hadoop/core-site.xml文件中的 <property> <name>fs.defaultFS</name> <va ...
- Shader 优化笔记
如果shader中采了深度图,但是实际上相机没开深度图的话,会严重降帧. 做uv动画时应该 o.uv1.xy = v.uv * _Layer1_ST.xy + frac(_Layer1_ST.zw * ...
- Uva10972(RevolC FaeLoN)
题目链接:传送门 题目大意:给你一副无向图,问至少加多少条边使图成为边双联通图 题目思路:tarjan算法+缩点(如果已经是双连通图就直接输出0) #include <iostream> ...
- restful demo 演示; jquery min1.1;
[说明]上午建立了一个restful风格的一个测试,运行通过:下午试了试postman,想看看http请求的具体过程,但是chrome浏览器的network面板也可以查看,并且很方便,就索性用它了 一 ...
- poj1840
Eqs Time Limit: 5000MS Memory Limit: 65536K Total Submissions: 15133 Accepted: 7426 Description ...