ServletConfig是一个接口,有关配置文件的
servlet的配置信息<---对应--->ServletConfig
web.xml配置文件会被加载到内存中,然后解析器会对它进行解析,解析完(把信息)封装到了这个类中(面向对象的思想)。这一块是由Tomcat来完成
1个ServletConfig对象,对应一段web.xml中的Servlet的配置信息。
接口中的方法:
String getServletName();---一般没用,获取的是<servlet-name>中的内容,也就是获取
上图中的BServlet字段,随便起的名字。
ServletContext getServletContext():获取Servlet上下文对象!
String getInitParameter(String name):通过名称获取指定初始化参数的值。
Enumeration getInitParameterNames():返回值是一个集合,获取所有初始化参数的名称。
代码举例:
web.xml
1 <?xml version="1.0" encoding="UTF-8"?> 2 <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 3 xmlns="http://java.sun.com/xml/ns/javaee" 4 xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" 5 id="WebApp_ID" version="3.0"> 6 7 <servlet> 8 <servlet-name>xxx</servlet-name> 9 <servlet-class>one.servlet.AServlet</servlet-class> 10 <init-param><!-- 两个参数信息 --> 11 <param-name>p1</param-name> 12 <param-value>v1</param-value> 13 </init-param> 14 <init-param> 15 <param-name>p2</param-name> 16 <param-value>v2</param-value> 17 </init-param> 18 </servlet> 19 20 <servlet-mapping> 21 <servlet-name>xxx</servlet-name> 22 <url-pattern>/AServlet</url-pattern><!-- url的模式,即以什么样来访问,最终浏览器访问 --> 23 </servlet-mapping> 24 25 </web-app>
AServlet.java片段
在init方法中,因为该方法中由ServletConfig对象,然后获取初始化的参数和名称
1 @Override 2 public void init(ServletConfig servletConfig) throws ServletException { 3 //第一个被Tomcat调用,然后会给它传参数ServletConfig 4 System.out.println("init()..."); 5 /* 6 * 获取初始化参数 7 * */ 8 System.out.println(servletConfig.getInitParameter("p1")); 9 System.out.println(servletConfig.getInitParameter("p2")); 10 //获取初始化参数名称 11 Enumeration e=servletConfig.getInitParameterNames(); 12 while(e.hasMoreElements()){ 13 System.out.println(e.nextElement()); 14 } 15 }
浏览器请求结果,控制台的结果
init()... v1 v2 p2 p1 service()...
真正有用的是ServletContext getServletContext()方法
相关类中还有ServletRequest接口(请求)和ServletResponse接口(响应)
接口,由Java提供的
javax.servlet下的
方法返回的是接口的实现类对象
实现类由Tomcat提供
在这你所见到的接口,自己没有写过它的实现类,它的实现类由Tomcat提供。
如:Servlet是接口,我们只写该类,并没有实例化,是Tomcat提供的实例化对象。