Listener监听器

在request、session、application对象创建、销毁或往其中添加修改删除属性时自动执行代码的组件。

reques监听:servletRequestListener(监听request对象创建销毁)、

servletRequestAttributeListener(监听对象的属性的增删改)。

session监听:HttpSessionListener((监听session对象创建销毁)、

HttpSessionAttributteListener(监听session对象的属性的增删改)、

HttpSessionBindingListener(监听对象和session的绑定和解除)、

HttpSessionActivationListener(对session数据的钝化和活化的监听)。

ServletContext监听:servletContextListener(监听器对象的创建和销毁)、

ServletContextAttributeListener(监听其对象属性的增删改)。

servletContext对象 

context域对象:web容器(tomcat)启动时,会为每一个web应用创建一个ServletContext上下文对象,它代表当前web应用。可在servlet中通过ServletConfig.getServletContext方法获其web应用中共享的唯一上下文对象,并利用其进行通信。其随web应用销毁而销毁。

其方法有setAttribute、getAttribute、removeAttribute。

servlet初始化参数和servlertContext初始化参数:
web.xml文件
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
         version="4.0">
    <!--servletContext上下文对象的初始化参数-->
    <context-param>
        <param-name>contextName</param-name>
        <param-value>zhangsan</param-value>
    </context-param>
    <context-param>
        <param-name>contextPassword</param-name>
        <param-value>hello123</param-value>
    </context-param>
    <servlet>
        <servlet-name>userServlet</servlet-name>
        <servlet-class>com.kdy.web.servlet.UserServlet</servlet-class>
        <!--该servlet的初始化参数-->
        <init-param>
            <param-name>userServletName</param-name>
            <param-value>zhangsan666</param-value>
        </init-param>
        <init-param>
            <param-name>userServletPassword</param-name>
            <param-value>hello666666</param-value>
        </init-param>
    </servlet>
    <servlet-mapping>
        <servlet-name>userServlet</servlet-name>
        <url-pattern>/userServlet</url-pattern>
    </servlet-mapping>
</web-app>
userServlet
public class UserServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        ServletContext context = this.getServletContext();
        String contextName = context.getInitParameter("contextName");
        String contextPassword = context.getInitParameter("contextPassword");
        System.out.println(contextName+":"+contextPassword);
        context.setAttribute("contextName",contextName);
        context.setAttribute("contextPassword",contextPassword);
        //Enumeration<String> initParameterNames = context.getInitParameterNames();//一次性获取所有初始化参数
        String userServletName = getInitParameter("userServletName");
        String userServletPassword = getInitParameter("userServletPassword");
        System.out.println(userServletName+":"+userServletPassword);
        req.getRequestDispatcher("/jsp/hello.jsp").forward(req,resp);
    }
    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        doGet(req,resp);
    }
}
hello.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>hello</title>
</head>
<body>
<h1L>hello jsp~</h1L><br/>
contextName:${contextName}<br/>
contextPassword:${contextPassword}<br/>
<%
    System.out.println("到达jsp...");
%>
</body>
</html>

ServletContextListener

package com.kdy.web.listener;

import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
import javax.servlet.annotation.WebListener;

@WebListener
public class ContextLoaderListener implements ServletContextListener {
    @Override
    public void contextInitialized(ServletContextEvent servletContextEvent) {
        System.out.println("web服务器启动时要处理的代码...");
        /*
        ApplicationContext app = new ClassPathXmlApplicationContext("applicationContext.xml");
        ServletContext servletContext = servletContextEvent.getServletContext();
        servletContext.setAttribute("app",app);
        */
    }

    @Override
    public void contextDestroyed(ServletContextEvent servletContextEvent) {
        System.out.println("web应用关闭时要处理的代码...");
    }
}
如果上面的监听器类不使用@WebListener注解,需要在web.xml中加上声明监听器的以下代码
    <listener>
        <listener-class>com.kdy.listener.ContextLoaderListener</listener-class>
    </listener>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值