上下文 —— ServletConfig、ServletContext

本文详细介绍了ServletConfig和ServletContext在Java Web开发中的作用与使用方法。包括如何通过ServletConfig获取servlet的初始化参数,以及ServletContext如何用于管理和共享web应用级别的信息。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

   一、ServletConfig对象

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

  1.   <servlet> 
  2.     <servlet-name>DemoServlet</servlet-name> 
  3.     <servlet-class>cn.csdn.web.servlet.DemoServlet</servlet-class> 
  4.       <init-param> 
  5.         <param-name>version</param-name> 
  6.         <param-value>2.0</param-value> 
  7.       </init-param>  
  8.     <load-on-startup>1</load-on-startup> 
  9.   </servlet> 
  10.   <servlet-mapping> 
  11.     <servlet-name>DemoServlet</servlet-name> 
  12.     <url-pattern>/demo/*</url-pattern> 
  13.   </servlet-mapping> 

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

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

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

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

<span style="font-family:Microsoft YaHei;"><span style="font-family: 'Microsoft YaHei';font-size:12px; line-height: 21px;">    </span><span style="font-family: 'Microsoft YaHei';font-size:12px; line-height: 21px;">    </span>String username = this.config.getInitParameter("username");
<span style="font-family: 'Microsoft YaHei';font-size:12px; line-height: 21px;">    </span><span style="font-family: 'Microsoft YaHei';font-size:12px; line-height: 21px;">    </span>String password = this.config.getInitParameter("password");</span>


    二、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>jiruan03_2yangfei@163.com</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);

              }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值