Servlet获取Web应用程序的初始化参数

时间:2020-12-22 21:04:08

ServletContext接口

当Servlet启动时,会为每个Web应用创建一个唯一的ServletContext对象
表示当前Web应用,该对象不仅封装了当前Web应用的所用信息,并且实现了多个Servlet之间数据的共享

获取Web应用程序的初始化参数
在web.xml文件中,不仅可以配置Servlet的初始化信息
还可以配置整个Web应用的初始化信息
配置如下

<?xml version="1.0" encoding="ISO-8859-1"?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" version="3.0">
    <servlet>
        <servlet-name>TestServlet03</servlet-name>
        <servlet-class>cn.itcast.chapter04.servlet.TestServlet03</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>TestServlet03</servlet-name>
        <url-pattern>/TestServlet03</url-pattern>
    </servlet-mapping>
    <context-param>
        <param-name>companyName</param-name>
        <param-value>itcast</param-value>
    </context-param>
    <context-param>
        <param-name>address</param-name>
        <param-value>beijing</param-value>
    </context-param>
</web-app>

参数信息
<context-param>,位于根元素中
<param-name>,用来指定参数的名字
<param-value>,用来指定参数的值

获取这些参数信息,可以使用ServletContext接口
它定义了getInitParameterNames()和getInitParameter(String name)方法
分别用来获取参数名和参数值

示例程序

编写TestServlet03类
代码如下

package cn.itcast.chapter04.servlet;
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class TestServlet03 extends HttpServlet{
    public void doGet(HttpServletRequest request,HttpServletResponse response)throws ServletException, IOException{
        response.setContentType("text/html;charset=utf-8");
        PrintWriter out=response.getWriter();
        //得到ServletContext对象
        ServletContext context=this.getServletContext();
        //得到包含所有初始化参数名的Enumeration对象
        Enumeration<String> paramNames=context.getInitParamterNames();
        //遍历所有的初始化参数名,得到相应的参数值,打印到控制台
        out.println("all the paramName and paramValue are following:");
        //遍历所有的初始化参数名,得到相应的参数值并打印
        while(paramNames.hasMoreElement()){
            String name=paramNames.nextElement();
            String value=context.getInitParamter(name);
            out.println(name+":"+value);
            out.println("<br>");
        }
    }
    public void doPost(HttpServletRequest request,HttpServletResponse response)throws ServletException, IOException{
        this.doGet(request,response);
    }
}

通过this.getServletContext()方法,获取ServletContext对象
调用getInitParameterNames()方法,获取到包含所有初始化参数名的Enumeration对象,然后,遍历Enumeration对象,根据获取到的参数名,通过getInitParameter(String name)方法,得到对应的参数值
启动Tomcat,在浏览器中输入地址
http://localhost:8080/chapter04/TestServlet03
访问TestServlet03
Servlet获取Web应用程序的初始化参数