<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>

servletConfig和ServletContext 以及servletContextListener介绍的更多相关文章

  1. ServletConfig与ServletContext

    ServletConfig与ServletContext对象详解 一.ServletConfig对象    在Servlet的配置文件中,可以使用一个或多个<init-param>标签为s ...

  2. ServletConfig和ServletContext

    ServletConfig和ServletContext Servlet初始化参数 在Servlet的配置文件web.xml中,可以使用一个或多个<init-param>标签为Servle ...

  3. JavaEE:Servlet简介及ServletConfig、ServletContext

    Servlet简介 1.Servlet是sun公司提供的一门用于开发动态web资源的技术*静态web资源:固定数据文件*动态web资源:通过程序动态生成数据文件2.Servlet技术基于Request ...

  4. day05 Servlet 开发和 ServletConfig 与 ServletContext 对象

    day05 Servlet 开发和 ServletConfig 与 ServletContext 对象 1. Servlet 开发入门 - hello world 2. Servlet 的调用过程和生 ...

  5. JaveWeb学习之Servlet(二):ServletConfig和ServletContext

    原文同步发表至个人博客[夜月归途] 原文链接:http://www.guitu18.com/se/java/2018-07-26/20.html 作者:夜月归途 出处:http://www.guitu ...

  6. ServletConfig、ServletContext 的应用

    一.ServletConfig对象及其应用(用的不多) 1. Context和ContextPath:一个web工程,若名为JavaWeb,访问的路径为:http://localhost:8080/J ...

  7. JavaWeb学习笔记:ServletConfig()和ServletContext()

    ServletConfig()和ServletContext() 1.ServletConfig() ServletConfig是一个接口,它由server提供商来实现. ServletConfig封 ...

  8. ServletConfig和ServletContext 区别

      ServletConfig和ServletContext 1.ServletContext在整个web应用程序生命周期内存在,用来保存全局对象,整个web应用都可以使用其获取context参数.当 ...

  9. 谈谈 ServletConfig 和 ServletContext

    目录 一.ServletConfig 和 ServletContext 的概念 二.ServletConfig 和 SerlvetContext 代码表示 一.ServletConfig 和 Serv ...

随机推荐

  1. lightoj--1005--Rooks(组合数)

    Rooks Time Limit: 1000MS   Memory Limit: 32768KB   64bit IO Format: %lld & %llu Submit Status De ...

  2. ubantu下NiFi单节点安装部署

    第一步,首先下载安装包:http://nifi.apache.org/download.html,博主下载的是1.4.0版本,直接下载的是编译后的文件. 第二步:将压缩包上传到服务器相应目录下,并且解 ...

  3. Linux 定时任务 Crontab按秒执行

    目前在crontab中最小执行时间单位为分钟. 如果需要按秒来执行,有以下两种方法: 方法一:通过sleep来实现 例: 1.创建test.php文件,这里测试通过打印时间好区分. <?php ...

  4. ASP.NET MVC上传文件 未显示页面,因为请求实体过大。解方案

    在Dropzone中设置   maxFilesize: 350, //MB 但上传的文件没有到最大限定350MB,就报出来 未显示页面,因为请求实体过大的错误 Web.config中设置  maxAl ...

  5. JDBC数据库中表更新

    import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sq ...

  6. Mac OS X10.9安装的Python2.7升级Python3.4步骤详解

    Mac OS X10.9安装的Python2.7升级Python3.4步骤详解 Mac OS X10.9默认带了Python2.7,不过现在Python3.4.0出来了,如果想使用最新版本,赶紧升级下 ...

  7. MobX入门

    MobX入门 本文尝试解释MobX是如何运作的.我们将用MobX创建一个小案例.如果你正在找靠谱的MobX文档,可以去看官方文档. 什么是MobX 官方文档的解释:简洁,易扩展的状态管理.简单来说,M ...

  8. MemCached总结三:PHP的memcached管理接口

    在Web系统中应用MemCached缓存技术,必须使用客户端API(PHP)进行访问,这样才能将用户请求的动态数据,缓存到memcached服务器中,来减少对数据库的访问压力.PHP中提供了用于内存缓 ...

  9. SQL Server-聚焦过滤索引提高查询性能

    前言 这一节我们还是继续讲讲索引知识,前面我们讲了聚集索引.非聚集索引以及覆盖索引等,在这其中还有一个过滤索引,通过索引过滤我们也能提高查询性能,简短的内容,深入的理解,Always to revie ...

  10. Spring AOP理解

    Spring的核心思想的IOC和AOP.最近学习AOP,对切面的学习有了进一步的认识. Spring用代理类包裹切面,把他们织入到Spring管理的bean中.也就是说代理类伪装成目标类,它会截取对目 ...