JavaWeb入门(四)- Servlet的关联类ServletConfig与ServletContext详解(中)

1. 前言

在上一篇文章中,介绍了如何开发并部署一个Servlet。本文主要是分析Servlet中的一些方法及关联类。Servlet的方法有:init(),Service()和destory()。Servlet的核心类图如下所示:
Servlet核心类图

2. Servlet的关联类

通过分析源码可知,Servlet的init函数的代码如下:

Servlet接口代码ServletConfig代码
Servlet接口代码ServletConfig代码

在进行初始化的时候,使用了ServletConfig类,而ServletConfig 类中,又包含了ServletContext。所以,本节主要介绍这两个类的含义及用途。

2.1 ServletConfig

Servlet引擎将Servlet的配置参数信息一并封装到一个称为ServletConfig的对象中,并在初始化Servlet实例对象时传递给该Servlet。ServletConfig封装了Servlet的配置信息,并且可以获取ServletContext对象。在具体开发中,可以通过web.xml文件中,标签下的来设置Servlet的初始化信息。

2.1.1 添加Servlet的初始化信息

使用在web.xml文件中配置如下:

1. <servlet>  
2.     <servlet-name>MainServlet</servlet-name>  
3.     <servlet-class>com.wes.controller.MainServlet</servlet-class>  
4.     <init-param>  
5.        <param-name>param1</param-name>  
6.        <param-value>avalible in servlet init()</param-value>  
7.     </init-param>  
8.     <load-on-startup>0</load-on-startup>  
9. </servlet> 

从代码中获取参数的代码为:

public class HelloServlet implements Servlet {
    @Override
    public void init(ServletConfig servletConfig) throws ServletException {
        System.out.println("init");
        String user = servletConfig.getInitParameter("user");
        System.out.println(user);
    }
}
2.1.2 ServletConfig的常用接口函数

ServletConfig接口则用于定义ServletConfig对象需要对外提供的方法,以便在Servlet程序中可以调用这些方法来获取有关信息。常用的方法有:

  • getInitParameterNames
  • getInitParameter
  • getServletName
  • getServletContext

Servlet引擎调用Servlet的实例对象的init(ServletConfig config)方法将ServletConfig对象传递给Servlet。Servlet.getServletConfig()方法必须返回init(ServletConfig config)方法传递进来的这个ServletConfig对象的引用。

2.2 ServletContext

Servlet在有些情况下可能需要访问Servlet容器或借助Servlet容器访问外部的资源,所以,Serlvet引擎需要将表示Servlet容器的对象传递给Servlet,这个类就是ServletContext。

Servlet引擎为每个WEB应用程序都创建一个对应的ServletContext对象,ServletContext对象被包含在ServletConfig对象中,调用ServletConfig.getServletContext方法可以返回ServletContext对象的引用。

由于一个WEB应用程序中的所有Servlet都共享同一个ServletContext对象,所以,ServletContext对象被称之为 application 对象(Web应用程序对象)。

2.2.1添加web应用程序的初始化参数

在web.xml文件的根元素中增加子元素,可以添加对web程序的初始化参数。常见的web程序初始化参数包括数据库引擎数据库地址等。代码如下所示:

<web-app>
    <context-param>
        <param-name>driver</param-name>
        <param-value>com.mysql.jdbc.Driver</param-value>
    </context-param>
    <context-param>
        <param-name>jdbcurl</param-name>
        <param-value>jdbc:mysql:///</param-value>
    </context-param>
</web-app>

从代码中获取参数的代码为

    ServletContext context = servletConfig.getServletContext();
    String driver = context.getInitParameter("driver");
    System.out.println(driver);
2.2.2 ServletContext常用接口函数参数
  • getInitParameterNames
  • getInitParameter
  • getRealPath(String path)

ServletContext.getInitParameterNames方法:用于返回一个包含WEB应用程序的所有初始化参数名称的Enumeration集合对象.
ServletContext.getInitParameter方法:用于返回某个指定名称的初始化参数值。
getRealPath(String path) 方法: 用于返回某个虚拟路径所映射的本地文件系统路径

2.2.3context-param标签 与 init-param标签的异同

标签下的context-param来配置信息,是webApp中的配置信息,能够给该应用中所有的Servlet用。

而init-param所配置的信息,是给init-param所属标签下的Servlet用。

从作用域的范围来看,前者是全局变量,后者是局部变量。

3.总结

本文从Servlet的核心类图出发,分析了与之相关的两个关联类ServletConfig和ServletContext。并介绍了相关用法和方法。并比较了两者的异同。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值