<servlet>

    <servlet-name>BeerParamTests</servlet-name>

    <servlet-class>TestInitParams</servlet-class>



    <init-param>

        <param-name>addEmail</param-name>

        <param-value>lik@qq.com</param-name>

    </init-param>

</servlet>



在servlet代码中能够通过

getServletConfig().getInitParameter("addEmail"):





调用getServletConfig() 不能在初始化參数之前调用 不能在init中调用 必须等servlet载入完才干够调用.

********容器初始化一个servlet时,会为这个Servlet创建一个唯一的ServletConfig********





创建servletConfig步骤:





1.容器读取Servlet部署文件,包含servlet的初始化參数(init-param)

2.容器为这个servlet创建一个新的servletConfig实例

3.容器为每一个servlet初始化參数创建一个键值对。

4.容器向ServletConfig提供键值对初始化參数的引用.

5.容器创建servlet类的一个新实例

6.容器调用servlet的init方法 传入servletCOnfig的引用.





容器仅仅会读一次Servlet初始化參赛,在Servlet生命周期中无法改变这个值,除非又一次部署servlet.







上下文初始化參数,不不过针对一个Servlet可用。它是针对整个web应用,应用中全部Servlet和jsp都自己主动的能訪问

上下文初始化參数。能够在web.xml中配置。

<servlet>

</servlet>

<context-param>

    <param-name>add</param-name>

    <param-value></param-value>

</context-param>





在代码中,getServletContext().getInitParameter("add");

或者ServletContext context = getServletContext();

context.getInitParameter("add");





每一个servlet一个ServletConfig

每一个web应用一个ServletContext



假设web应用是分布的,那么每一个jvm就会有一个servletcontext,假设应用分布在多个server上

那么web应用实际上能够有多个servletContext。

一个ServletContext确实仅仅相应一个应用。可是前提是应用

在一个jvm中.

servletContext和ServletConfig仅仅有获取的方法,没有设置的值的方法。都是常量。

两种方法获取ServletContext对象

getServletConfig().getServletContext().getInitParameter();

或者

this.getServletConfig().getServletContext();





ServletContextListener 监听ServletContext一生中关键两个事件。初始化和撤销.

ServletContextListener能够做的工作:

1.上下文初始化时候的能够做:从servletContext得到上下文初始化參赛。

使用初始化參数查找名建立一个数据库连接

把数据库连接存储为一个属性,使得web应用各个部分都能訪问



上下文撤销时:

关闭数据库连接





public class MyServletContextListener implements ServletContextListener{

    public void contextInitialized(ServletContextEvent event){

        //数据库连接代码

    }

    public void contextDestroyed(ServletContextEvent event){

        //关闭数据库连接代码

    }

}





以下是一个应用实例对与监听器的使用



public class MyServletContextListener implements ServletContextListener{

    public void contextInitialized(ServletContextEvent event){

        //数据库连接代码

        ServletContext sc = event.getServletContext();

        String dogBreed = sc.getInitParameter("breed");

        Dog d = new Dog(dogBreed);

        sc.setAttribute("dog",d);//利用上下文设置属性,在其它地方就能够获得属性

    }

    public void contextDestroyed(ServletContextEvent event){

        //关闭数据库连接代码

    }

}





public class Dog{

    private String breed;

    public Dog(String breed){

        this.breed = breed;

    }



    public String getBreed(){

        return breed;

    }

}





public class ListenerTester extends HttpServlet{

    public void doGet(HttpServletRequest request,HttpServletResponse response)throws Excepton{

        response.setContentType("text/html");\

        PrintWriter out = response.getWriter();

        Dog dog = (Dog)getServletContext().getAttribute("dog");

        out.println(dog.getBreed());

    }

}





web.xml部署文件

<servlet>

</servlet>



<servlet-mapping>

</servlet-mapping>

<context-param>

<param-name>breed</param-name>

<param-value>Great Dane</param-value>

</context-param>



<listener>

<listener-class>

com.gac.MyServletContextListener

</listener-class>

</listener>

最新文章

  1. mysql不能插入中文
  2. gulp.js基础入门
  3. map阶段动态获取CombineTextInputFormat各输入文件路径
  4. 蛋疼的vs
  5. JAVA基础学习之XMLCDATA区、XML处理指令、XML约束概述、JavaBean、XML解析(8)
  6. Period[HDU1358]
  7. Chrome控制台函数
  8. AutoTile 自动拼接(六 大结局) 学习与实践
  9. 【机器学习】--线性回归中soft-max从初始到应用
  10. python pyqt4问题记录
  11. 使用Rancher和私有仓库快速搭建Kubernetes集群
  12. Flash builder 、flash cs6、 as 3.0研究
  13. 筛选法求n以内所有的素数
  14. 【SPL标准库专题(8)】 Datastructures:SplFixedArray
  15. 牛客练习赛16 E - 求值
  16. Entities、pads、links 实体、垫、链接
  17. Java的动态编译、动态加载、字节码操作
  18. dev中ASPxListBox单选和多选的设置
  19. iOS9 HTTP请求失败
  20. 视觉SLAM实战(一):RGB-D SLAM V2

热门文章

  1. CodeForces--621A--Wet Shark and Odd and Even(数学水题)
  2. org.springframework.beans.factory.config.PropertyPlaceholderConfigurer的systemPropertiesModeName属性
  3. 1-1restful简介及资源介绍
  4. BZOJ 2659 数学
  5. NOIP 2012 D1T1 Vigen&#232;re密码
  6. C - Unary(map)
  7. C#怎么清除字符串中HTML标签。。。
  8. ModelState对象
  9. poj3083 Children of the Candy Corn 深搜+广搜
  10. 智能家居控制APPUI界面设计