JavaWeb基础: ServletConfig

基本概念

  • ServletConfig用于配置Servlet的参数:在Servlet的配置文件中,可以使用一个或者是多个<init-param> 标签为Servlet配置一些初始化参数。当有些Servlet参数需要灵活可配置时,就可以用ServletConfig来实现。
  • 当配置完这些初始化参数后,Tomcat在创建Servlet实例对象时回自动的将这些参数封装到ServletConfig当中,并在调用Servlet的初始化方法时将ServletConfig对象传递给Servlet。
  • 开发人员可以通过ServletConfig对象获取当前Servlet初始化的参数信息。
  • ServletConfig 可以用来配置Servlet的编码属性/数据库连接属性/配置文件的路径,因为它是针对单个Servlet的配置,在实际开发并不经常被使用。

示例:配置FirstServletConfig的初始化参数

<?xml version="1.0" encoding="UTF-8"?>
<web-app
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns="http://java.sun.com/xml/ns/javaee"
    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>FirstServletConfig</servlet-name>
        <servlet-class>servletConfig.FirstServletConfig</servlet-class>
        <!-- init-param的key-value paris可以通过ServletConfig传递到Servlet中 -->
        <init-param>
            <param-name>testServletConfig</param-name>
            <param-value>GetFirstServletConfig</param-value>
        </init-param>
    </servlet>

    <servlet-mapping>
        <servlet-name>FirstServletConfig</servlet-name>
        <url-pattern>/FirstServletConfig</url-pattern>
    </servlet-mapping>
    
    <servlet>
        <servlet-name>OverrideServletConfig</servlet-name>
        <servlet-class>servletConfig.OverrideServletConfig</servlet-class>
        <!-- init-param的key-value paris可以通过ServletConfig传递到Servlet中 -->
        <init-param>
            <param-name>OverrideServletConfig</param-name>
            <param-value>OverrideServletConfig</param-value>
        </init-param>
    </servlet>

    <servlet-mapping>
        <servlet-name>OverrideServletConfig</servlet-name>
        <url-pattern>/OverrideServletConfig</url-pattern>
    </servlet-mapping>
</web-app>

 示例:通过 this.getServletConfig() 获取传递进来的ServletConfig对象

package servletConfig;

import java.util.Enumeration;

import javax.servlet.ServletConfig;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/* 
 * 1.在web-xml中的servlet下面配置<init-param>
 * 2.获取ServletConfig对象:this.getServletConfig() 或者是申明ServletConfig config,然后重写初始化方法,直接调用config对象。(二选一,不能共存)
 * 3.通过config.getInitParameter(name) 获取特定初始化参数 或者是 config.getInitParameterNames()获取所有初始化参数名
 * 
 */
public class FirstServletConfig extends HttpServlet {


	public void doGet(HttpServletRequest request, HttpServletResponse response) {
		enumServletConfigInitParams();
	}

	public void enumServletConfigInitParams() {
		// 通过this.getServletConfig() 获取Tomcat传递的ServletConfig对象
		Enumeration<String> initParas = this.getServletConfig().getInitParameterNames();
		String name, value;
		while (initParas.hasMoreElements()) {
			name = initParas.nextElement();
			value = this.getServletConfig().getInitParameter(name);
			System.out.println("name:" + name);
			System.out.println("value:" + value);
		}
	}

	
}

示例:通过重载Servlet初始化方法,获取传递进来的ServletConfig对象

package servletConfig;

import javax.servlet.ServletConfig;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class OverrideServletConfig extends HttpServlet{
	
	private ServletConfig config;
	
	public void doGet(HttpServletRequest request, HttpServletResponse response) {
		getServletConfigInitParamByName();
	}
	public void getServletConfigInitParamByName() {
		//通过输入特定的初始化参数名称获得初始化参数值
		String value = this.config.getInitParameter("OverrideServletConfig");
		System.out.println("value:" + value);
		
	}
	//重写了Servlet的初始化方法,把服务器封装的ServletConfig传递给了当前Servlet的私有Config对象
	//一旦重写了此方法,不能够再调用 this.getServletConfig()获取当前Servlet的ServletConfig对象,只能通过传递过来的私有变量config来操作。
	public void init(ServletConfig config){
		this.config=config;
	}
}

  

原文地址:https://www.cnblogs.com/vivian-test/p/5928891.html