监听器**

监听器 **
  1) 什么是监听器?
    servlet 规范当中定义的一种特殊的类,作用是监听容器当中产生的一些事件并进行相应的处理。
  容器产生的事件指的是两大类事件:
  第一大类
    生命周期相关的事件,指的是当容器创建戒者销毁 request,session,ServletContext 对象时产生的事件。
  第二大类
    绑订事件,指的是当调用 request,session,ServletContext 对象的
      setAttribute,removeAttribute 时产生的事件。
  2) 如何写监听器
  step1
    写一个 java 类,实现特定的监听器接口类(依据要监听的事件类型)。
  step2
    在接口声明的方法中,实现监听的逻辑。
  step3
    配置(web.xml)。
  3) ServletContext 接口
    web 服务器在启动时,会为每一个已经部署的应用创建唯一的一个 ServletContext 实例。该实例会一直存在,除非服务器关闭或者应用被删除。
  注意:每个应用对应唯一的一个 ServletContext 实例
    a. 如何获得 ServletContext 实例。
      GenericServlet 提供了 getServletContext()方法。
      HttpSession 提供了 getServletContext()方法。
      ServletConfig 提供了 getServletContext()方法。
    b. 常用方法
       绑订数据
        setAttribute(String name,Ob ject obj);
        getAttribute(String name);
        removeAttribute(String name);
       配置全局的初始化参数
        step1
          在 web.xml 中,使用<context-param>配置的参数,可以被所有的 servlet 共享。
        step2
          使用 String ServletContext.getInitParameter(String paraName);
       依据逻辑路径获得实际部署时的物理路径。
        String ServletContext.getRealPath(String url);
  4) 上传文件(扩展)
    step1
      在 form 中,设置 method="post",设置 enctype="multipart/form-data"。 enctype 属性用于设置表单的编码方式,对于文件上传,必须设置成"multipart/form-data"。
    step2
    在 servlet 类当中,不能够使用 request.getParameter 方法来获得参数值。要使用InputStream request.getInputStream();分析 InputStream 来获得参数值。直    接分析InputStream 比较复杂,一般使用一些封装好的工具(比如 apache 提供的commons-fileupload.jar)来获得参数值。

走在一起是缘分,在一起走是幸福; 在一起走是缘分,走在一起是幸福
原文地址:https://www.cnblogs.com/tarena/p/3622480.html