• java学习路线之:Javaweb技术总结(监视器的应用场景、方法、配置等)


    JavaWeb中,监听器是一种组件,能够监听项目的启动和停止,用户会话的创建和销毁,以及各种组件的添加、更新和删除,能够通过监听对象的状态改变,自动做出反应执行响应代码。

    应用场景:

    启动网站后进行初始化、检测用户的数量等。

    常用的监听器接口:

    ServletContextListener 监听项目的启动和停止

    方法:

    contextInitialized 项目加载完成

    contextDestroyed 项目停止

    HttpSessionListener 监听用户会话的创建和销毁

    sessionCreated 每一个用户第一次访问时调用

    sessionDestroyed 每个用户退出系统后调用

    监听器的配置:

    方式1 web.xml

    <listener>

    <listener-class>包名+类名</listener-class>

    </listener>

    方式2 注解

    @WebListener

    案例:监听网站的启动

    /**

     * 项目的监听器

     * @author chenheng

     *

     */

    @WebListener

    public class WebApplicationListener implements ServletContextListener{

     

    //项目启动

    @Override

    public void contextInitialized(ServletContextEvent sce) {

    System.out.println("项目启动了!!!!");

    //保存一些数据到项目中

    sce.getServletContext().setAttribute("money", 999999);

    }

     

    //项目停止

    @Override

    public void contextDestroyed(ServletContextEvent sce) {

    System.out.println("项目停止了!!!!!");

    }

    }

    案例:监听网站的用户数

    /**

     * 会话监听器

     * @author chenheng

     *

     */

    @WebListener

    public class UserListener implements HttpSessionListener{

     

    //用户会话创建

    @Override

    public void sessionCreated(HttpSessionEvent se) {

    //把用户的数量保存到ServletContextapplication)中

    ServletContext application = se.getSession().getServletContext();

    //获得用户的总数

    Object count = application.getAttribute("count");

    if(count == null){

    //如果是第一个用户,没有总数,添加总数

    application.setAttribute("count", 1);

    System.out.println("第一个用户");

    }else{

    //如果不是第一个,就用户数量加1

    application.setAttribute("count", (int)count + 1);

    System.out.println("新用户来了");

    }

    }

     

    //用户会话销毁

    @Override

    public void sessionDestroyed(HttpSessionEvent se) {

    ServletContext application = se.getSession().getServletContext();

    Object count = application.getAttribute("count");

    if(count != null && (int)count > 0){

    application.setAttribute("count", (int)count - 1);

    System.out.println("用户走了");

    }

    }

    }

     

    /**

     * 关闭SessionServlet

     */

    @WebServlet("/close.do")

    public class CloseSessionServlet extends HttpServlet{

    @Override

    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

    //关闭Session

    req.getSession().invalidate();

    }

    }

     

     

    JSP页面:

    <%@ page language="java" contentType="text/html; charset=UTF-8"

        pageEncoding="UTF-8"%>

    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

    <html>

    <head>

    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

    <title>测试</title>

    </head>

    <body>

    当前网站在线人数:${count}<br>

    <a href="javascript:location.href='close.do';">退出</a>

    </body>

    </html>

     

  • 相关阅读:
    虽然非常简单但是效果不错
    Google地图开发总结
    笔记(一):ES6所改良的javascript“缺陷”
    ex6的选择器
    android中的style部分属性值介绍
    Android ImageSwitcher
    c# Winform退出程序的方法
    Android ImageView获取网络图片
    循环向数据库(sql server)插入10W条数据
    Android Handler+Thread实现更新Ui
  • 原文地址:https://www.cnblogs.com/qf-dd/p/9965056.html
Copyright © 2020-2023  润新知