当servlet配置了初始化参数后,web容器在创建servlet对象的时候会自动将这些初始化参数分装到ServletConfig对象当中去,并在调用servlet的init方法的时候将ServletConfig对象传递给servlet,进而程序员可以通过ServletConfig对象就可以获得web应用的初始化参数。
1.如何去获取当前web应用的ServletConfig对象?
通过观察Genericservlet的源码,我们可以看到在GenericServlet中将ServletConfig对象作为了类变量,并且有getServletConfig方法可以获取ServletConfig对象。因此作为GenericServlet的子类,HttpServlet亦可以通过这个方法来获得ServletConfig对象。
ServletConfig config=this.getServletConfig();
2.ServletConfig对象当中的几个比较重要的方法:
config.getServletName()//获取当前servlet在web.xml文件当中的配置名称
config.getInitParamater("String name");//获取当前Servlet配置当中的指定名称的初始化参数的值
config.getInitParameter();//获取当前servlet所有配置参数组成的一个枚举
ServletContext getServletContext()//获取当前web应用的ServletContext对象
package com.hhuc; 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 Servletconfig extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { ServletConfig config = this.getServletConfig();// 获取config对象 // --获取当前Servlet在web.xml中的配置名称 String sname = config.getServletName(); System.out.println(sname); // --获取当前Servlet配置中的初始化参数 String value = config.getInitParameter("name2"); System.out.println(value); // --获取当前Servlet配置中的初始化参数枚举 Enumeration enumeration = config.getInitParameterNames(); while (enumeration.hasMoreElements()) { String name = (String) enumeration.nextElement(); String value2 = config.getInitParameter(name); System.out.println(value2); } // 获取一个ServletContext对象 ServletContext context = config.getServletContext(); Enumeration e = context.getInitParameterNames(); while (e.hasMoreElements()) { String name = (String) e.nextElement(); String value3 = context.getInitParameter(name); System.out.println(name + ":" + value3); } } public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doGet(request, response); } }
其实总的来说,ServletConfig对象并不是特别的重要。