• 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;
    	}
    }
    

      

  • 相关阅读:
    Array
    自底向上的单元测试&&程序设计思想
    如何从 100 亿 URL 中找出相同的 URL?
    个人博客开发之数据库设计
    SpringBoot 优雅整合Swagger Api 自动生成文档
    SpringBoot Validation参数校验 详解自定义注解规则和分组校验
    SpringBoot Validation优雅的全局参数校验
    Spring Boot 无侵入式 实现RESTful API接口统一JSON格式返回
    SpringBoot优雅的全局异常处理
    SpringBoot2.4.x整合Mybatis-Plus3.4.x(详细教程)
  • 原文地址:https://www.cnblogs.com/vivian-test/p/5928891.html
Copyright © 2020-2023  润新知