Servlet_ServletConfig对象

ServletConfig对象概述

            ServletConfig封装了Servlet的相关配置信息。ServletConfig是一个接口,其具体实现是由服务器的厂商所实现。通过ServletConfig对象。我们可以获取一些配置文件(web.xml)中的配置信息。如果需设置一些配置信息,那么我们可以通过在web.xml中设置,然后通过该对象获取即可。这样做的好处就是方便配置文件中的信息复用和修改。

 

ServletConfig接口常用方法

1.public String getInitParameter(String name);获取指定参数名的初始化参数
2.public Enumeration getInitParameterName();获取参数名组成的Enumeration
3.public ServletContext getServletContext();返回一个Servlet的上下文对象(重要)
4.public String getServletName();获取Servlet的名字

 

ServletConfig基本使用

1.在web.xml中配置,然后通过SrvletConfig对象获取内容

web.xml配置信息:

<servlet>
     <servlet-name>HelloWorld</servlet-name>
     <servlet-class>com.cn.test</servlet-class>
     <!--配置Servlet的初始化参数信息,并且该节点必须在load-on-startup节点之前-->
     <init-param>
     <!--初始化参数名-->
     <param-name>user</param-name>
     <!--初始化参数值-->
     <param-value>root</param-value>
     </init-param>

     <init-param>
     <param-name>password</param-name>
     <param-value>123456</param-value>
     </init-param>

     <load-on-startup>1</load-on-startup>
 </servlet>

 

使用servletConfig获取配置文件中的内容

@Override
    public void init(ServletConfig servletConfig) throws ServletException {
        
        System.out.println("method init");
        //获取配置的参数
        String user = servletConfig.getInitParameter("user");
        System.out.println("获取的参数是:"+user);

        //不常使用
        Enumeration<String> names = servletConfig.getInitParameterNames();
        while(names.hasMoreElements()){
        String name = names.nextElement();
        String value = servletConfig.getInitParameter(name);
        System.out.println("获取的参数是:" + name +"---"+value);
        
        }

        //获取Servlet的名字
        String servletName = servletConfig.getServletName();
        System.out.println("Servlet的名字是:"+servletName);
    }
 

获取结果如下:

Servlet_ServletConfig对象

 

2.在注解中配置相关的参数,然后获取并显示输出

package com.cn.test;

import java.io.IOException;
import java.util.Enumeration;

import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebInitParam;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;


@WebServlet(name = "TestServlet",
            urlPatterns = "/TestServlet",           
            initParams = {
            @WebInitParam(name="user", value="root"),
            @WebInitParam(name="password", value="123456")
                       }
)

public class TestServlet extends HttpServlet{

    private static final long serialVersionUID = 1L;
    
    @Override
    public void init(ServletConfig servletConfig) throws ServletException {        
        super.init(servletConfig);
        System.out.println("method init");    
        
    }
    

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp)
            throws ServletException, IOException {
        System.out.println("doPost.....");
        ServletConfig servletConfig = this.getServletConfig();
        String user = servletConfig.getInitParameter("user");
        System.out.println("获取的参数是:"+user);

        //不常使用
        Enumeration<String> names = servletConfig.getInitParameterNames();
        while(names.hasMoreElements()){
        String name = names.nextElement();
        String value = servletConfig.getInitParameter(name);
        System.out.println("获取的参数是:" + name +"---"+value);
        
        }

        //获取Servlet的名字
        String servletName = servletConfig.getServletName();
        System.out.println("Servlet的名字是:"+servletName);
    }
    
    
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp)
            throws ServletException, IOException {
        // TODO Auto-generated method stub
        doPost(req, resp);
    }
}
 

显示效果如下:

Servlet_ServletConfig对象