统计当前会议管理系统的次数,希望服务器发生意外时,停止了,重启了服务器
希望访问次数是累加的
使用上下文属性实现:如果服务器重启,数据会丢失
使用数据库存储,使用监听器来监听服务器重启的事件
使用上下文:
使用监听器
counter表
1.新增CounterDAO
package com.meeting.dao;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import com.meeting.util.ConnectionFactory;
public class CounterDAO {
private Connection conn;
// 更新
public void update(int visitcount){
conn=ConnectionFactory.getConnection();
String sql="update counter set visitcount=?";
try {
PreparedStatement pstmt = conn.prepareStatement(sql);
pstmt.setInt(1, visitcount);
pstmt.executeUpdate();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
ConnectionFactory.closeConnection();
}
}
// 查询
public int select(){
int visitcount=0;
conn=ConnectionFactory.getConnection();
String sql="select * from counter";
try {
PreparedStatement pstmt = conn.prepareStatement(sql);
ResultSet rs=pstmt.executeQuery();
if(rs.next()){
visitcount=rs.getInt("visitcount");
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
ConnectionFactory.closeConnection();
}
return visitcount;
}
public static void main(String[] args){
CounterDAO dao=new CounterDAO();
dao.update(2);
System.out.println(dao.select());
}
}
2.新增监听器CounterListener
package com.meeting.listener;
import javax.servlet.ServletContext;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
import com.meeting.dao.CounterDAO;
public class CounterListener implements ServletContextListener {
/**
* 上下文对象销毁时,自动调用
*/
@Override
public void contextDestroyed(ServletContextEvent arg0) {
ServletContext ctxt=arg0.getServletContext();
int visitcount=Integer.parseInt(ctxt.getAttribute("visitcount").toString());
CounterDAO dao=new CounterDAO();
dao.update(visitcount);
}
/**
* 上下文创建时候,自动调用
*/
@Override
public void contextInitialized(ServletContextEvent arg0) {
CounterDAO dao=new CounterDAO();
int visitcount=dao.select();
ServletContext ctxt=arg0.getServletContext();
ctxt.setAttribute("visitcount", visitcount);
}
}
3.配置web.xml
4.LoginServlet.java
5.top.java
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
<title>无标题文档</title>
<link rel="stylesheet" href="styles/common.css"/>
</head>
<body>
<div class="page-header">
<div class="header-banner">
<img src="images/header.png" alt="CoolMeeting"/>
</div>
<div class="header-title">
欢迎访问Cool-Meeting会议管理系统
</div>
<div class="header-quicklink">
欢迎您,<strong>${sessionScope.employeename}</strong>
<a href="#">[修改密码]</a>
</div>
<div class="header-quicklink">
目前网站访问次数:<font color='red'>${applicationScope.visitcount}</font>
</div>
</div>
</body>
</html>