Listener
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import javax.servlet.ServletContext;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
import javax.xml.transform.Result;
import com.oameeting.util.DbUtil;
public class myListener implements ServletContextListener{
Connection conn = null;
PreparedStatement ptmt = null;
ResultSet rs = null;
//关闭服务器
public void contextDestoryed(ServletContextEvent arg0) {
// TODO Auto-generated method stub
//关闭服务器是,将显著存在上下文的数据取出,保存到数据库里
ServletContext context = arg0.getServletContext();
Object cc = context.getAttribute("countFlag");
// java.lang.Object cc = context.getAttribute("countFlag");
conn = DbUtil.getConn();
String sql ="update counter set count=?";
try {
ptmt = conn.prepareStatement(sql);
// ptmt .setInt(1,(Integer)cc);
ptmt.executeUpdate();
} catch (SQLException e) {
// TODO: handle exception
e.printStackTrace();
}
}
@Override
public void contextInitialized(ServletContextEvent arg0) {
// TODO Auto-generated method stub
//启动时要从数据库拿出来 给上下文
//查询操作
conn = DbUtil.getConn();
String sql ="select count from counter";
try {
ptmt = conn.prepareStatement(sql);
rs = ptmt.executeQuery();
if(rs.next()){
ServletContext context = arg0.getServletContext();
context.setAttribute("countFlag", rs.getInt(1));
}
} catch (SQLException e) {
// TODO: handle exception
e.printStackTrace();
}
}
}
Filter
import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class LoginFilter implements Filter{
@Override
public void destroy() {
}
@Override
public void doFilter(ServletRequest arg0, ServletResponse arg1,
FilterChain arg2) throws IOException, ServletException {
//将父类ServletRequest强转换成转换成HttpServletRequest
HttpServletRequest request = (HttpServletRequest)arg0;
HttpServletResponse response = (HttpServletResponse)arg1;
//如果登录过 则可继续显示一下界面,否则跳转到登录界面
//但是每个界面都这样写很麻烦 所以需要过滤器filter
String name=(String)request.getAttribute("sussname");
if(name == null){
request.getRequestDispatcher("login.jsp").forward(request, response);
}
arg2.doFilter(arg0, arg1);//传走
}
@Override
public void init(FilterConfig filterConfig) throws ServletException {
// TODO Auto-generated method stub
}
}