上下文 —— ServletConfig、ServletContext

一、ServletConfig对象

在Servlet的配置文件中,可以使用一个或多个<init-param>标签为servlet配置一些初始化参数。(配置在某个servlet标签或者整个web-app下)

<servlet>
    <servlet-name>DemoServlet</servlet-name>
    <servlet-class>cn.csdn.web.servlet.DemoServlet</servlet-class>
    <init-param>
        <param-name>version</param-name>
        <param-value>2.0</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
    <servlet-name>DemoServlet</servlet-name>
    <url-pattern>/demo/*</url-pattern>
</servlet-mapping> 

当servlet配置了初始化参数后,web容器在创建servlet实例对象时,会自动将这些初始化参数封装到ServletConfig对象中,并在调用servlet的init方法时,将ServletConfig对象传递给servlet。进而,程序员通过ServletConfig对象就可以得到当前servlet的初始化参数信息。

首先,需要创建私有变量:private ServletConfig config = null;

其次,要重写init方法,传入config,令this.config = config;从而获得ServletConfig对象

最后,就可以获得<init-parm>中的配置信息了

String username = this.config.getInitParameter("username");
String password = this.config.getInitParameter("password");

二、ServletContext对象

1、ServletContext对象是由谁创建的

由Servlet容器负责创建,对于每个JavaWeb应用,在WEB容器启动时,Servlet容器都会为每个web应用程序创建一个ServletContext对象,它代表当前web应用。

2、servletContext对象的获取:

1)ServletContext对象被包含在ServletConfig对象中 所以可以通过ServletConfig 对象调用ServletConfig.getServletContext()获得对ServletContext对象的引用。

2)在继承了HttpServlet对象的类中 可以通过this.getServletContext来获取。

3、ServletContext接口是Servlet中最大的一个接口,呈现了web应用的Servlet视图。ServletContext实例是通过 getServletContext()方法获得的,由于HttpServlet继承Servlet的关系GenericServlet类和 HttpServlet类同时具有该方法。每个应用都会有一个ServletContext对象与之关联,当容器分布在在多个虚拟机上时,web应用在所分布的每个虚拟机上都拥有一个ServletContext实例.缺省情况下,ServletContext不是分布式的,并且只存在于一个虚拟机上。

4、例子

1)初始化参数

在web.xml中配置初始化参数

<web-app>
    <param-name>email</param-name>
    <param-value>[email protected]</param-value>
</web-app>

从Servlet中访问初始化参数:

ServletContext application=this.getServletContext();
out.println("send us your<a href=<mailto:‘");
out.println(application.getInitParameter("email"));
out.println("‘>email</a>");

2)属性

可以通过编程的方式绑定,也可以作为web应用的全局变量被所有Servlet和JSPs访问

设置Context属性:

ServletContext application=this.getServletContext();
application.setAttribute("person1",new Person("Jim"));
application.setAttribute("person2",new Person("Green"));

获取Context属性:

ServletContext application=this.getServletContext();
Enumberation persons=application.getAttributeNames();
while(persons.hasMoreElements()){
    String name=(String)persons.nextElement();
    Person p=(Person)persons.getAttribute(name);
    application.removeAttribute(name);
}

原文地址:https://www.cnblogs.com/yifanSJ/p/9217415.html

时间: 2024-11-17 11:37:50

上下文 —— ServletConfig、ServletContext的相关文章

spring 上下文和spring mvc上下文和web应用上下文servletContext之间的关系

要想很好理解这三个上下文的关系,需要先熟悉spring是怎样在web容器中启动起来的.spring的启动过程其实就是其IoC容器的启动过程,对于web程序,IoC容器启动过程即是建立上下文的过程. spring的启动过程: 首先,对于一个web应用,其部署在web容器中,web容器提供其一个全局的上下文环境,这个上下文就是ServletContext,其为后面的spring IoC容器提供宿主环境: 其次,在web.xml中会提供有contextLoaderListener.在web容器启动时,

ServletContext 与application的异同

servletContext接口是Servlet中最大的一个接口,呈现了web应用的Servlet视图.ServletContext实例是通过 getServletContext()方法获得的,由于HttpServlet继承Servlet的关系GenericServlet类和HttpServlet类同时具有该方法. 条件:假设说我们有一个WEB应用,这个WEB应用中有10个SERVLET 在这里,这个WEB应用就拥有一个它自己的仓库-ServletContext,而这10个Servlet则共享这

ServletContext作用功能详解

ServletContext作用功能详解 ServletContext,是一个全局的储存信息的空间,服务器开始, 其就存在,服务器关闭,其才释放.request,一个用户可有多个:session,一个用户一个:而servletContext,所有用户共用一 个.所以,为了节省空间,提高效率,ServletContext中,要放必须的.重要的.所有用户需要共享的线程又是安全的一些信息. 换一种方式说吧,运行在JAVA虚拟机中的每一个Web应用程序都有一个与之相关的Servlet上下文.Servle

Java ServletContext 详解

ServletContext, 是一个全局的储存信息的 空间,服务器开始,其就存在,服务器关闭,其才释放.request,一个用户可有多个:session,一个用户一个:而 servletContext,所有用户共用一个.所以,为了节省空间,提高效率,ServletContext中,要放必须的.重要的.所有用户需要共 享的线程又是安全的一些信息. 换一种方式说吧,运行在JAVA虚拟机中的每一个Web应用程序都有一个与之相关的Servlet上下文.ServletContext对象是Web服务器中的

spring中的web上下文,spring上下文,springmvc上下文区别(超详细)

web上下文(Servlet context),spring上下文(WebApplication Context),springmvc上下文(mlWebApplicationCont)之间区别. 上下文:可以简单的理解为容器,配置文件 web上下文目标对象是所有web应用,spring上下文目标对象是单个web应用,spring mvc目标对象是单个web应用的spring mvc框架(是spring上下文的子上下文,即继承自spring上下文,所以子能够调用父的东西,反之,不可). 以上感觉自

应用上下文webApplicationContext

一.先说ServletContext javaee标准规定了,servlet容器需要在应用项目启动时,给应用项目初始化一个ServletContext作为公共环境容器存放公共信息.ServletContext中的信息都是由容器提供的. 举例: 通过自定义contextListener获取web.xml中配置的参数 1.容器启动时,找到配置文件中的context-param作为键值对放到ServletContext中 2.然后找到listener,容器调用它的contextInitialized(

ServletContext对象统计在线人数

package com.zdsofe.servlet1; import java.io.IOException; import java.io.PrintWriter; import javax.servlet.ServletContext; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import

Spring mvc 上下文初始化过程

在软件开发的中,如果某些特性的使用比较普遍,那么这些特性往往可以作为平台特性来实现,通过对这些平台特性进行有效的封装,使其向其他应用开放.正是如此,Spring由于其IOC.AOP.事务处理.持久化驱动等特点,使得其起到了一个应用平台的作用.Spring MVC是Spring的一个重要的模块,其web应用的实现,是由Spring的来支撑的,Spring MVC的是实现也是依托再Spring平台提供的基础特性的.本文主要是介绍Spring mvc容器初始化的过程,从中可以看出Spring MVC的

Spring-MVC理解之一:应用上下文webApplicationContext

一.先说ServletContext javaee标准规定了,servlet容器需要在应用项目启动时,给应用项目初始化一个ServletContext作为公共环境容器存放公共信息.ServletContext中的信息都是由容器提供的. 举例: 通过自定义contextListener获取web.xml中配置的参数 1.容器启动时,找到配置文件中的context-param作为键值对放到ServletContext中 2.然后找到listener,容器调用它的contextInitialized(