这个界面按照西南石油大学计算机科学学院的官网的样式进行开发的,主要是为了执行session,但是我花在写界面的时间明显是写SessionListener代码的20+倍。
而且在最后JSP执行返回值的强制转换时页面就直接崩溃,问题就直接出在了JSP它对返回结果的调用上,在尝试修改几次JSP之后,发现页面只要调用了返回结果就必然会导致布局错乱之后,
我放弃了用JSP,转而通过Spring进行编写。
之后的操作就是将JSP上的界面内容,以及css,script等文件转移到Spring上。
其中index负责启动index.html界面并掌控全局。
index.html文件就是网页界面。
并且在application.properties中设置server.servlet.session.timeout为60s。
并且在HTML中调用ajax用以替换“.people”的文字----用count替换
在index中通过响应这个请求(request)来调用
因为session是由服务端(也由服务器创建)传给客户端的,而且默认情况下一个浏览器独占一个session。因此在后面的操作中要用到两个浏览器。
而且服务端会吧session的id号以cookie的形式回写给客户机,这样只要客户机的浏览器不关,再去访问浏览器时,就会带着session的id号去,服务端就会使用内存中与之对应的session为之服务。
既然知道了session的创建和销毁机制,就可以对这个在线人数方法进行构造了。
首先:我们希望在创建session的时候,就有一个integer公共变量count(初始默认为0)进行++;在销毁session的时候,count进行--;
那么,问题来了,怎么能捕捉到session进行创建和销毁的方法呢?
解决方案是:使用SessionListener这个监听器,该监听器接口自HttpSessionListener。它接口了
sessionCreated(),sessionDestroyed()等方法,这里我们只需要用到前面两个就行了。
在create和destroy两个方法里面写上
public static int count = 0;
@Override
public void sessionCreated(HttpSessionEvent se) {
System.out.println("session创建,session创建时间:"+ System.currentTimeMillis() + ",count=" + count);
count++;
}
/**
* session失效后执行
*/
@Override
public void sessionDestroyed(HttpSessionEvent se) {
System.out.println("session销毁,session销毁间:"+System.currentTimeMillis()+",count=" +count);
count--;
}
在该逻辑内对count进行操作,会将count的值进行返回;因此先在浏览器中打开。因为图方便,就没有将count的值存入到session的属性中,而是直接返回的count
打开腾讯浏览器,输入localhost:8080
在log中:
由于之前的设置:在60s之后:session自动销毁
然后用IE浏览器打开
在log中:
过了60s之后两者一起销毁:
项目文件没整理好:熬了几乎一整天(物理上的一天+)
然后就是界面需要完善:但是还是发出来吧。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>西南石油大学计算机科学学院</title>
<link rel="stylesheet" href="style/style.css">
<script src="https://lib.baomitu.com/jquery/3.3.1/jquery.min.js"></script>
</head>
<body>
<div id="Page">
<div>在线人数:<span class="people">1</span></div>
<!--<%--<div>在线人数<%=(int)pageContext.getAttribute("userCount",pageContext.APPLICATION_SCOPE)%> </div>--%>-->
<div id="topBox">
<div id = "top">
<div class="search">
<form>
<input class="textInput" type="text" placeholder="请输入关键字">
<div class="fdj fr">
<input class="search-bt" type="submit" value="">
</div>
</form>
</div>
</div>
</div>
<div id = "navBox">
<nav id = "nav">
<ul>
<li><a class="link" href="index.htm">网站首页</a></li>
<li class="mainmenu"><a class="link" href="xygk/xyjj.htm">学院概况</a>
<dl>
<dd>
<a href="xygk/xyjj.htm">学院简介</a>
</dd>
<dd>
<a href="xygk/xyld.htm">学院领导</a>
</dd>
<dd>
<a href="xygk/zzjg.htm">组织机构</a>
</dd>
</dl></li>
<li class="mainmenu"><a class="link" href="bksjy/jsjkxyjszy.htm">本科生教育</a>
<dl>
<dd>
<a href="bksjy/jsjkxyjszy.htm">计算机科学与技术专业</a>
</dd>
<dd>
<a href="bksjy/rjgczy.htm">软件工程专业</a>
</dd>
<dd>
<a href="bksjy/wlgczy.htm">网络工程专业</a>
</dd>
<dd>
<a href="bksjy/wlwgczy.htm">物联网工程专业</a>
</dd>
<dd>
<a href="bksjy/xxglyxxxtzy.htm">信息管理与信息系统专业</a>
</dd>
<dd>
<a href="bksjy/wlkjaqzy.htm">网络空间安全专业</a>
</dd>
<dd>
<a href="bksjy/sjkxydsjjszy.htm">数据科学与大数据技术专业</a>
</dd>
<dd>
<a href="bksjy/dwrchzpyxm.htm">对外人才合作培养项目</a>
</dd>
<dd>
<a href="bksjy/ksxx.htm">考试信息</a>
</dd>
<dd>
<a href="bksjy/xkzxxx.htm">选课重修信息</a>
</dd>
<dd>
<a href="bksjy/tzgg.htm">通知公告</a>
</dd>
<dd>
<a href="bksjy/zlxz.htm">资料下载</a>
</dd>
<dd>
<a href="bksjy/gxkjssp.htm">公选课教师视频</a>
</dd>
</dl></li>
<li class="mainmenu"><a class="link" href="yjsjy/zsjz.htm">研究生教育</a>
<dl>
<dd>
<a href="yjsjy/zsjz.htm">招生简章</a>
</dd>
<dd>
<a href="yjsjy/jsjkxyjsyjxk.htm">计算机科学与技术一级学科</a>
</dd>
<dd>
<a href="yjsjy/rjgcyjxk.htm">软件工程一级学科</a>
</dd>
<dd>
<a href="yjsjy/wlkjaqyjxk.htm">网络空间安全一级学科</a>
</dd>
<dd>
<a href="yjsjy/yjsds.htm">研究生导师</a>
</dd>
<dd>
<a href="yjsjy/yjsjztx.htm">研究生奖助体系</a>
</dd>
<dd>
<a href="yjsjy/tzgg.htm">通知公告</a>
</dd>
<dd>
<a href="yjsjy/zlxz.htm">资料下载</a>
</dd>
</dl></li>
<li class="mainmenu"><a class="link" href="szdw/js.htm">师资队伍</a>
<dl>
<dd>
<a href="szdw/js.htm">教授</a>
</dd>
<dd>
<a href="szdw/fjs.htm">副教授</a>
</dd>
<dd>
<a href="szdw/js1.htm">讲师</a>
</dd>
<dd>
<a href="szdw/syry.htm">实验人员</a>
</dd>
</dl></li>
<li class="mainmenu"><a class="link" href="kxyj/kytd.htm">科学研究</a>
<dl>
<dd>
<a href="kxyj/kytd.htm">科研团队</a>
</dd>
<dd>
<a href="kxyj/kypt.htm">科研平台</a>
</dd>
<dd>
<a href="kxyj/kycg.htm">科研成果</a>
</dd>
</dl></li>
<li class="mainmenu"><a class="link" href="xsgz/gzdt.htm">学生工作</a>
<dl>
<dd>
<a href="xsgz/gzdt.htm">工作动态</a>
</dd>
<dd>
<a href="xsgz/tzgg.htm">通知公告</a>
</dd>
<dd>
<a href="xsgz/kwcxsj.htm">课外创新实践</a>
</dd>
<dd>
<a href="xsgz/bysjy.htm">毕业生就业</a>
</dd>
<dd>
<a href="xsgz/xlzc.htm">心灵之窗</a>
</dd>
<dd>
<a href="xsgz/qcfc.htm">青春风采</a>
</dd>
<dd>
<a href="xsgz/zlxz.htm">资料下载</a>
</dd>
</dl></li>
<li class="mainmenu"><a class="link" href="info/1189/4517.htm">招生工作</a>
<dl>
<dd>
<a href="zsgz/xyjs.htm">学院介绍</a>
</dd>
<dd>
<a href="zsgz/bysjyqx.htm">毕业生就业去向</a>
</dd>
<dd>
<a href="zsgz/yxbysjj.htm">优秀毕业生简介</a>
</dd>
<dd>
<a href="zsgz/xshj.htm">学生获奖</a>
</dd>
<dd>
<a href="zsgz/jyxyjs.htm">精英校友介绍</a>
</dd>
<dd>
<a href="zsgz/zsgzxcbd.htm">招生工作宣传报道</a>
</dd>
</dl></li>
<li class="mainmenu"><a class="link" href="info/1183/2625.htm">实验中心</a>
<dl>
<dd>
<a href="syzx/zxjj.htm">中心简介</a>
</dd>
<dd>
<a href="syzx/syfs.htm">实验分室</a>
</dd>
<dd>
<a href="syzx/gzzd.htm">规章制度</a>
</dd>
<dd>
<a href="syzx/zlxz.htm">资料下载</a>
</dd>
<dd>
<a href="http://syskf.swpu.edu.cn">开放预约</a>
</dd>
</dl></li>
<li class="mainmenu"><a class="link" href="djzc/djdt.htm">党建之窗</a>
<dl>
<dd>
<a href="djzc/djdt.htm">党建动态</a>
</dd>
<dd>
<a href="djzc/xxyd.htm">学习园地</a>
</dd>
<dd>
<a href="djzc/dwzwgk.htm">党务政务公开</a>
</dd>
<dd>
<a href="djzc/zlxz.htm">资料下载</a>
</dd>
</dl></li>
</ul>
</nav>
</div>
<div id = "rollbarBox" style=" margin-top:12px;">
<div id = "rollbarContainer" class="rollbarContainer">
<div class="rollbar">
<ul>
<li></li>
<li></li>
</ul>
</div>
<div class="bd">
<ul>
<li style="display:block;">
<a href="image/welcome.jpg" target="_blank">
<img src="image/welcome.jpg">
</a>
</li>
<li style="display:none;">
<a href="image/main-zs.jpg" target="_blank">
<img src="image/main-zs.jpg">
</a>
</li>
</ul>
</div>
<div class="prev"></div>
<div class="next"></div>
</div>
</div>
<div id="containerBox">
<div id="container">
<!-- 1 -->
<div class="container-box" columns="6">
<div class="inform-box fl" columns="4" style="width: 65%">
<div class="dynamic">
<h6>图片新闻</h6>
<span><a href="index/xwsd.htm"><img
src="image/more.png"></a></span>
</div>
<div class="newBox">
<!--新闻信息-->
<div class="new_pic">
<div style="OVERFLOW: hidden; height: 174px; width: 310px">
<div id="u_u4_div"
style="text-align: center; padding: 0px; margin: 0px; border: 0px solid black; background-color: #000000; height: 174px; width: 310px">
<div id="u_u4_imgdiv"
style="padding: 0px; border: 0px; height: 100%; width: 100%">
<a id="u_u4_url" target="_blank" href="../image/newsOne.jpg"> <img
style="width: 100%; height: 100%" src="image/newsOne.jpg" />
</a>
</div>
</div>
<div
style="filter: alpha(style = 1, opacity = 10, finishOpacity = 80); width: 310px; height: 19px; text-align: right; top: -30px; position: relative; padding: 0px; margin: 0px; border: 0px;">
<a href="javascript:void(0);" id="selectNode1"
class="imagechangenews_pnode" target="_self">1</a><a
href="javascript:void(0);" id="selectNode2"
class="imagechangenews_pnode" target="_self">2</a><a
href="javascript:void(0);" id="selectNode3"
class="imagechangenews_pnode" target="_self">3</a><a
href="javascript:void(0);" id="selectNode4"
class="imagechangenews_pnode" target="_self">4</a><a
href="javascript:void(0);" id="selectNode5"
class="imagechangenews_pnode" target="_self">5</a><a
href="javascript:void(0);" id="selectNode6"
class="imagechangenews_pnode" target="_self">6</a>
</div>
</div>
<div
style="text-align: center; overflow: hidden; text-overflow: ellipsis; height: 25px; width: 310px;">
<a target="_blank" class="titlestyle192939" id="u_u4_newstitle"
href="info/1045/4427.htm" title="计科院组织学生参加2018天府国际网络安全高峰论坛">计科院组织学生参加2018天府国际网络安全高峰论坛</a>
</div>
</div>
<div class="new_list">
<ul class="dynamic_list fr">
<li><a href="info/1045/4613.htm"
title="计算机科学学院举办2019年寒假留校学生新春团拜会"><span>[02-01]</span><em>计算机科学学院举办2019年寒假留校学生新春</em></a></li>
<li><a href="info/1045/4650.htm"
title="学院召开教职工大会学习传达中层干部大会精神 部署学院学期工作"><span>[03-15]</span><em>学院召开教职工大会学习传达中层干部大会精</em></a></li>
<li><a href="info/1045/4643.htm"
title="计科院工会组织学院女教职工庆祝第109个“三八妇女节”"><span>[03-12]</span><em>计科院工会组织学院女教职工庆祝第109个“</em></a></li>
<li><a href="info/1045/4633.htm"
title="学术讲座——人工智能改变我们的未来生活"><span>[03-05]</span><em>学术讲座——人工智能改变我们的未来生活</em></a></li>
<li><a href="info/1045/4603.htm"
title="计算机科学学院各年级辅导员集中走访学生寝室"><span>[01-21]</span><em>计算机科学学院各年级辅导员集中走访学生寝</em></a></li>
<li><a href="info/1045/4592.htm"
title="学院召开2018年度领导班子民主生活会"><span>[01-14]</span><em>学院召开2018年度领导班子民主生活会</em></a></li>
</ul>
</div>
</div>
</div>
<div class="inform-box fr" columns="2" style="width: 30%;">
<div class="dynamic cleafix">
<h6>学术交流</h6>
<span><a href="kxyj/kytd.htm"><img
src="image/more.png"></a></span>
</div>
<div class="newBox">
<div class="new_list">
<ul>
<li><a href="info/1076/4624.htm" title="人工智能改变我们的未来生活"><em>人工智能改变我们的未来生活</em></a></li>
<li><a href="info/1076/4537.htm" title="计算时代的虚假信息传播"><em>计算时代的虚假信息传播</em></a></li>
<li><a href="info/1076/4483.htm" title="人工智能+:视界充满AI"><em>人工智能+:视界充满AI</em></a></li>
<li><a href="info/1076/4397.htm" title="零行列式策略及其网络演化动力学"><em>零行列式策略及其网络演化动力学</em></a></li>
<li><a href="info/1076/4388.htm" title="视频遇上云服务"><em>视频遇上云服务</em></a></li>
<li><a href="info/1076/4380.htm"
title="计科院关于举行2018年校庆论文报告会的通知"><em>计科院关于举行2018年校庆论文报告会的通知</em></a></li>
</ul>
</div>
</div>
</div>
<div style="clear: both"></div>
</div>
<!-- 2 -->
<div class="container-box" columns="6">
<div class="inform-box fl" columns="4" style="width: 65%">
<div class="dynamic">
<h6>新闻速递</h6>
<span><a href="index/xwsd.htm"><img
src="image/more.png"></a></span>
</div>
<div class="newBox">
<div class="new_list hasDetail">
<h3>
<a href="info/1045/4613.htm">计算机科学学院举办2019年寒假留校学生新春团拜会</a>
</h3>
<p>
在中华民族传统节日——春节即将到来之际,为让学院留校学生感受家的温暖,向他们传达学院的慰问和祝福。2019年2月1日上午9时30分,计算机科学学院在明理楼B306会议室隆重举行2019年寒假留…[<span><a
href="info/1045/4613.htm">详细信息</a></span>]
</p>
<ul>
<li><a href="info/1045/4650.htm"><span>03/15</span><em>学院召开教职工大会学习传达中层干部大会精神
部署学院学期工作</em></a></li>
<li><a href="info/1045/4643.htm"><span>03/12</span><em>计科院工会组织学院女教职工庆祝第109个“三八妇女节”</em></a></li>
<li><a href="info/1045/4633.htm"><span>03/05</span><em>学术讲座——人工智能改变我们的未来生活</em></a></li>
<li><a href="info/1045/4603.htm"><span>01/21</span><em>计算机科学学院各年级辅导员集中走访学生寝室</em></a></li>
<li><a href="info/1045/4592.htm"><span>01/14</span><em>学院召开2018年度领导班子民主生活会</em></a></li>
<li><a href="info/1045/4589.htm"><span>01/10</span><em>计科院与川庆安检院技术交流大会</em></a></li>
</ul>
</div>
</div>
</div>
<div class="inform-box fr" columns="2" style="width: 30%">
<div class="dynamic">
<h6>党建动态</h6>
<span><a href="djzc/djdt.htm"><img
src="image/more.png"></a></span>
</div>
<div class="newBox">
<div class="new_list">
<ul>
<li><a href="info/1082/4651.htm"
title="学院召开教职工大会学习传达中层干部大会精神 部署学院学期工作"><em>学院召开教职工大会学习传达中层干部大会精神
部署学院学期工作</em></a></li>
<li><a href="info/1082/4593.htm" title="学院召开2018年领导班子民主生活会"><em>学院召开2018年领导班子民主生活会</em></a></li>
<li><a href="info/1082/4520.htm"
title="刘翔同志任计算机科学学院党委副书记、纪委书记"><em>刘翔同志任计算机科学学院党委副书记、纪委书记</em></a></li>
<li><a href="info/1082/4512.htm"
title="学院党委组织师生收看庆祝改革开放40周年大会"><em>学院党委组织师生收看庆祝改革开放40周年大会</em></a></li>
<li><a href="info/1082/4464.htm"
title="【审核评估】学院召开本科教学工作审核评估办学定位与目标宣讲大会"><em>【审核评估】学院召开本科教学工作审核评估办学定位与目标宣讲大会</em></a></li>
<li><a href="info/1082/4424.htm"
title="【聚焦评估】学院召开本科教学工作审核评估工作会"><em>【聚焦评估】学院召开本科教学工作审核评估工作会</em></a></li>
<li><a href="info/1082/4471.htm" title="学院党委开展迎校庆主题党日活动"><em>学院党委开展迎校庆主题党日活动</em></a></li>
<li><a href="info/1082/4376.htm"
title="学院党委组织收看2018年全国科学道德和学风建设宣讲教育报告会"><em>学院党委组织收看2018年全国科学道德和学风建设宣讲教育报告会</em></a></li>
</ul>
</div>
</div>
</div>
<div style="clear: both"></div>
</div>
<!-- 3 -->
<div class="container-box" columns="6">
<div class="inform-box fl" columns="4" style="width: 65%">
<div class="dynamic cleafix">
<h6>通知公告</h6>
<span><a href="index/tzgg.htm"><img
src="image/more.png"></a></span>
</div>
<div class="newBox">
<div class="new_list">
<ul>
<li><a href="info/1055/4638.htm"><em>自组团出访前公示信息表(彭博)</em></a></li>
<li><a href="info/1055/4627.htm"><em>计算机科学学院2019年春季学期开学教学准备及检查工作实施方案</em></a></li>
<li><a href="info/1055/4626.htm"><em>西南石油大学计算机科学学院关于举行学院2019年春季田径运动会的通知</em></a></li>
<li><a href="info/1055/4600.htm"><em>2018年秋季学期期末考试情况总结</em></a></li>
<li><a href="info/1055/4597.htm"><em>计算机科学学院2018年度教职工考核优秀名单公示</em></a></li>
<li><a href="info/1055/4588.htm"><em>国际学术会议(ICCIS2019)征稿通知</em></a></li>
<li><a href="info/1055/4584.htm"><em>计算机科学学院领导班子2018年度民主生活会征求意见</em></a></li>
<li><a href="info/1055/4578.htm"><em>关于表彰计算机科学学院2018-2019学年秋季学期“最美寝室”的通知</em></a></li>
</ul>
</div>
</div>
</div>
<div class="inform-box fr" columns="2" style="width: 30%">
<div class="dynamic">
<h6>专题列表</h6>
</div>
<div class="newBox">
<div class="new_list">
<ul>
<li><a href="info/1173/2003.htm" title="中美联合高性能和大数据计算实验室"><em>中美联合高性能和大数据计算实验室</em></a></li>
<li><a href="info/1173/2004.htm" title="石油工程计算机模拟技术重点实验室"><em>石油工程计算机模拟技术重点实验室</em></a></li>
<li><a href="info/1173/2005.htm" title="思科网络技术学院教师培训中心"><em>思科网络技术学院教师培训中心</em></a></li>
</ul>
</div>
</div>
</div>
<div style="clear: both"></div>
</div>
</div>
</div>
</div>
<footer id="footer">
<div>Copyright© 2018 All Rights Reserved. 西南石油大学计算机科学学院</div>
</footer>
<script src="script/slider.js" type="text/javascript"></script>
<script>
$.ajax({
type: 'post',
url: '/getCount',
dataType: 'json',
data: {
},
success: function (data) {
$('.people').html(data);
},
error: function () {
}
});
</script>
</body>
</html>
最后就是比较重要的listener了:
package com.example.demo;
import javax.servlet.annotation.WebListener;
import javax.servlet.http.HttpSessionEvent;
import javax.servlet.http.HttpSessionListener;
@WebListener
public class SessionListener implements HttpSessionListener {
public static int count = 0;
@Override
public void sessionCreated(HttpSessionEvent se) {
System.out.println("session创建,session创建时间:"+ System.currentTimeMillis() + ",count=" + count);
count++;
}
/**
* session失效后执行
*/
@Override
public void sessionDestroyed(HttpSessionEvent se) {
System.out.println("session销毁,session销毁时间:"+System.currentTimeMillis()+",count=" +count);
count--;
}
}