接着,我来写一个监听器的案例来巩固学习监听器的知识,便于日后的查阅和复习。大概分为以下几个步骤:
1.编写统计人数的Servlet,实现特定的监听器接口
2.编写好监听器接口后,在web.xml中注册间监听器(ServletContext、HttpSession、ServletRequest、HttpSessionAttributeL等)都在web.xml中使用<listener><listener-class>监听器的全路径</listener-class></listener>注册。
3.编写jsp跳转,访问,统计结果。
实验代码:
1.CountTotalNumberOfPeople.java
package com.nyist.cn.Example;
import javax.servlet.ServletContext;
import javax.servlet.http.HttpSessionEvent;
import javax.servlet.http.HttpSessionListener;
public class CountTotalNumberOfPeople implements HttpSessionListener{
int count = 0;
@Override
public void sessionCreated(HttpSessionEvent se) {
ServletContext context = se.getSession().getServletContext();
Integer count = (Integer)context.getAttribute("count");
if(count == null){
count = 1;
context.setAttribute("count",count);
}else {
count++;
context.setAttribute("count",count);
}
}
@Override
public void sessionDestroyed(HttpSessionEvent se) {
ServletContext context = se.getSession().getServletContext();
Integer count = (Integer)context.getAttribute("count");
count--;
context.setAttribute("count",count);
}
}
2.index.jsp
<style type="text/css">
span{
color: block;
font-family: '微软雅黑';
font-size: 17px;
}
</style>
<span>当前在线用户: ${applicationScope.count }人 </span>
</body>
<body>
注意:session的闲置链接时长为30分钟,我在web.xml中使用<session-config><session-timeout>1</session-timeout></session-config>修改了session的闲置链接时长为1分钟。闲置时长为在1分钟内无任何操作,session链接讲自动销毁
结果:
当前在线用户: 2人