实现一个监听器的接口;(有N种)
-
编写一个监听器
实现监听器的接口
//统计网站在线人数:统计session public class OnlineCountListener implements HttpSessionListener { //创建session监听:看你的一举一动 //一旦创建一个session就会触发一次这个事件! public void sessionCreated(HttpSessionEvent se) { ServletContext ctx = se.getSession().getServletContext(); System.out.println(se.getSession().getId()); Integer onlineCount = (Integer) ctx.getAttribute("OnlineCount"); if (onlineCount==null){ onlineCount=new Integer(1); }else { int count = onlineCount.intValue(); onlineCount = new Integer(count++); } ctx.setAttribute("OnlineCount",onlineCount); } //销毁session监听 //一旦销毁session就会触发一次这个事件! public void sessionDestroyed(HttpSessionEvent se) { ServletContext ctx = se.getSession().getServletContext(); Integer onlineCount = (Integer) ctx.getAttribute("OnlineCount"); if (onlineCount==null){ onlineCount=new Integer(0); }else { int count = onlineCount.intValue(); onlineCount = new Integer(count--); } ctx.setAttribute("OnlineCount",onlineCount); } } -
配置监听器(web.xml中注册)
<!-- 注册监听器--> <listener> <listener-class>com.xu.listener.OnlineCountListener</listener-class> </listener> -
看情况是否使用
13、过滤器、监听器的常见应用
监听器:GUI(图形界面编程)编程中经常使用
public static void main(String[] args) {
Frame frame = new Frame("教师节快乐");//新建一个窗体
Panel panel = new Panel(null);//面板
frame.setLayout(null);//设置窗体的布局
frame.setBounds(300,300,400,400);//设置大小
frame.setBackground(Color.blue);//设置背景颜色
panel.setBounds(50,50,100,100);
panel.setBackground(Color.yellow);
frame.add(panel);
frame.setVisible(true);
frame.addWindowListener(new WindowAdapter() {
@Override
public void windowClosing(WindowEvent e) {
super.windowClosing(e);
}
});
}
用户登录之后才能进入主页,用户注销后就不能进入主页!拦截器
-
用户登录之后向,Session中放入用户的数据
String username = req.getParameter("username");//获取页面上的值 if (username.equals("admin")){ req.getSession().setAttribute(Constant.USER_SESSION,req.getSession().getId());//用户名正确---放入session的值 resp.sendRedirect("/sys/success.jsp"); }else { resp.sendRedirect("/error.jsp"); } -
进入主页的时候要判断用户是否已经登录;(判断session是否为空)
HttpServletRequest request = (HttpServletRequest) servletRequest; //因为ServletRequest不可以调用session,所以进行强转 HttpServletResponse response = (HttpServletResponse) servletResponse; if (request.getSession().getAttribute(Constant.USER_SESSION)==null){ response.sendRedirect("/error.jsp"); } filterChain.doFilter(servletRequest,servletResponse);
本文展示了如何实现一个HttpSessionListener来统计网站的在线人数,并通过监听器跟踪session的创建和销毁。同时,介绍了在用户登录验证过程中,如何将用户信息存入session并在后续请求中检查用户是否已登录。此外,还提供了过滤器的概念,用于拦截用户访问,确保只有登录用户可以访问特定资源。

277

被折叠的 条评论
为什么被折叠?



