监听器 **
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)来获得参数值。