JSP教程
JSP高级教程

JSP config对象

config 对象是 javax.servlet.ServletConfig 类的实例,表示 Servlet 的配置信息。

当一个 Servlet 初始化时,容器把某些信息通过此对象传递给这个 Servlet,这些信息包括 Servlet 初始化时所要用到的参数(通过属性名和属性值构成)以及服务器的有关信息(通过传递一个 ServletContext 对象),config 对象的应用范围是本页。

开发者可以在 web.xml 文件中为应用程序环境中的 Servlet 程序和 JSP 页面提供初始化参数。表 1 列出了 config 对象的常用方法。

表1 config对象的常用方法

方法

说明

ServletContext getServletContext()

返回所执行的 Servlet 的环境对象

String getServletName()

返回所执行的 Servlet 的名字

String getInitParameter(String name)

返回指定名字的初始参数值

Enumeration getlnitParameterName()

返回该 JSP 中所有初始参数名,一个枚举

getServletName()获取这个servlet实例的名称

<%@ page language="java" contentType="text/html; charset=gb2132"  pageEncoding="ISO-8859-1"%> 
<html>  
<head>  
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">  
</head>  
<body>  
<!-- 直接输出config的getServletName的值 -->  
<%=config.getServletName()%>  
</body>  
</html>  

输出:jsp

所有的JSP都有相同的名字:jsp,所以此行代码将输出jsp。

getInitParameter根据name,获取初始化信息

<%@ page language="java" contentType="text/html; charset=gb2132"  pageEncoding="ISO-8859-1"%> 
<html>  
<head>  
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">  
</head>  
<body>  
<!-- 输出该JSP中名为name的参数配置信息 -->  
name配置参数的值:<%=config.getInitParameter("name")%><br/>  
<!-- 输出该JSP中名为age的参数配置信息 -->  
age配置参数的值:<%=config.getInitParameter("age")%>  
</body>  
</html>  
//web.xml
<servlet> 
  <!--指定servlet的名字-->  
  <servlet-name>config</servlet-name>  
  <!--指定哪一个JSP页面配置成Servlet-->  
  <jsp-file>/configTest2.jsp</jsp-file>  
  <!--配置名为name的参数,值为yeeku-->  
  <init-param> 
    <param-name>name</param-name>  
    <param-value>yeeku</param-value> 
  </init-param>  
  <!--配置名为age的参数,值为30-->  
  <init-param> 
    <param-name>age</param-name>  
    <param-value>30</param-value> 
  </init-param> 
</servlet>
<servlet-mapping> 
  <!--指定将config Servlet配置到/config路径-->  
  <servlet-name>config</servlet-name>  
  <url-pattern>/config</url-pattern> 
</servlet-mapping>

配置文件片段中的</init-param>为该Servlet(其实是JSP)配置了两个参数:name和value。上面的配置片段将configTest2.jsp页面配置成名为config的Servlet,并将该Servlet映射到/config处。这就允许我们使用/config来访问该页面。

例子:

//web.xml
<servlet> 
  <servlet-name>Servlet_03</servlet-name>  
  <servlet-class>com.enterise.always.servlet.Servlet_03</servlet-class>  
  <init-param> 
    <param-name>name_01</param-name>  
    <param-value>value_01</param-value> 
  </init-param>  
  <init-param> 
    <param-name>name_02</param-name>  
    <param-value>value_02</param-value> 
  </init-param> 
</servlet>
<servlet-mapping>  
  <servlet-name>Servlet_03</servlet-name>  
  <url-pattern>/servlet/Servlet_03</url-pattern>  
</servlet-mapping>
//ServletTest_03.java
package com.enterise.always.servlet;
import java.io.IOException;
import java.util.Enumeration;
import javax.servlet.ServletConfig;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class ServletTest_03 extends HttpServlet {
    private static final long serialVersionUID = 1L;

    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException,
    IOException {
        doPost(req, resp);
    }

    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException,
    IOException {
        //1.获取ServletConfig对象  
        ServletConfig config = getServletConfig();

        //1.getInitParameter  根据name,获取初始化信息
        String para_01 = config.getInitParameter("name_01");
        String para_02 = config.getInitParameter("name_02");

        System.out.println("para_01----------->" + para_01);
        System.out.println("para_02----------->" + para_02);

        //2.getInitParameterNames  获取所有初始化信息的名称
        Enumeration enumeration = config.getInitParameterNames();
        while (enumeration.hasMoreElements()) {
            String name = (String) enumeration.nextElement();
            String value = config.getInitParameter(name);
            System.out.println("name----------->" + name);
            System.out.println("value----------->" + value);
        }
        //3.getServletContext  获取ServletContext对象
        ServletContext servletContext = config.getServletContext();
        System.out.println("servletContext----------->" + servletContext);
        //4.getServletName  获取这个servlet实例的名称
        String servletName = config.getServletName();
        System.out.println("servletName----------->" + servletName);
    }
}

执行输出:

para_01----------->value_01  
para_02----------->value_02  
name----------->name_02  
value----------->value_02  
name----------->name_01  
value----------->value_01  
servletContext----------->org.apache.catalina.core.ApplicationContextFacade@b398da  
----------->Servlet_03