日期:2014-05-16  浏览次数:20410 次

head first 学习笔记 JSP&Servlet--5
4. 初始化参数

servletConfig:

获取方式:getServletConfig()

容器初始化一个servlet时,会为这个servlet建立一个唯一的servletConfig

容器从web.xml中读取servlet初始化参数,并把这些参数交给servletConfig,servletConfig接着传递给servlet的init方法

不要在构造函数中获取初始化参数,一个servlet只有在执行init方法后才算一个完整的servlet。如果必要的话,一般需要覆盖无参的init方法

生命周期:

1.容器读取配置文件
2.new一个servletConfig
3.servletConfig根据配置文件生成一个MAP的键值对
4.new一个servletConfig.class的实例
5.容器再次调用init()方法

JSP不能访问每个servletConfig中的初始化设置

配置:在servlet内部配置

ServletContext:上下文初始化参数

获取方式:getServletContext()

配置:
<context-param>
                <param-name>contextConfigLocation</param-name>
                <param-value>
                        classpath:bme.service.xml
                        /WEB-INF/conf/global.datasource.xml
                        /WEB-INF/conf/*.service.xml /WEB-INF/conf/*.web.xml
                        classpath:org/codehaus/xfire/spring/xfire.xml
                        classpath:iManager/spring/repository_service.xml
                </param-value>
</context-param>

servletContext与servletConfig之间的区别

1. 部署文件不同
   一个是配置在web-app目录下
   一个是配置在每个servlet下

2. 获取方式不同
   getServletConfig(),getServletContext

3. 应用范围不同
   getServletConfig只应用于单独对立的一个servlet。

   getServletContext应用于所有的JSP和所有的servlet。


4. 监听器

使用场景:在某类时间出发之前或之后处理事件例如想监听一个上下文初始化事件,这样能获得一些上下文参数,并在应用客户端之前运行一些代码

如果实现上下文的监听器,则需要实现ServletContextListener

详细代码如下所表示:
package com.xzm.listen;

import javax.servlet.ServletContext;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;

public class ContextListener implements ServletContextListener
{
   
    public void contextDestroyed(ServletContextEvent arg0)
    {
        ServletContext sct = arg0.getServletContext();
        sct.getInitParameter("ahah");
        System.out.println("离开上下文监听器了.......");
    }
   
    public void contextInitialized(ServletContextEvent arg0)
    {
       
        System.out.println("进入上下文监听器了......");
    }
   
}