ServletConfig
1 什么是ServletConfig
1. 是Servlet程序的配置信息类
2. Servlet和ServletConfig对象都是由Tomcat负责创建
3. Servlet程序是第一次访问的时候创建的,ServletConfig是每个Servlet程序创建时,就创建一个对应的ServletConfig对象
2 ServletConfig
-
三大作用
1. 可以获得Servlet程序的别名(servlet-name)的值 2. 获取初始化参数init-param 3. 获取ServletContext对象
-
编码
Web.xml
<servlet> <servlet-name>MyServlet_03</servlet-name> <servlet-class>com.dong.servlet.MyServlet_03</servlet-class> <!--初始化参数--> <init-param> <param-name>name</param-name> <param-value>张三</param-value> </init-param> </servlet> <servlet-mapping> <servlet-name>MyServlet_03</servlet-name> <url-pattern>/test3</url-pattern> </servlet-mapping>
Servlet:
@Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { System.out.println("进入方法!"); //获取Servlet的别名 System.out.println(getServletConfig().getServletName()); //获取初始化参数的值 System.out.println(getServletConfig().getInitParameter("name")); //获取ServletContext对象 System.out.println(getServletConfig().getServletContext()); }
3. 细节
-
getServletConfig
在HttpServlet的继承类中,可以直接获取ServletContext对象,通过 `getServletContext()` 方法,也可以通过ServeletConfig获取 因为HttpServlet继承自GenericServlet, 而GenericServlet实现了ServletConfig接口, 所以, 通过继承HttpServlet而来的类中, 都会存在ServletConfig
源码:
public ServletContext getServletContext() { ServletConfig sc = this.getServletConfig(); if (sc == null) { throw new IllegalStateException(lStrings.getString("err.servlet_config_not_initialized")); } else { return sc.getServletContext(); } }
-
init
任何继承GenericServlet的类的int方法中,都要调用父类的int方法.这是因为在int方法中传递着ServletConfig实例,我们都知道GenericServlet实现了ServletConfig实例
@Override public void init(ServletConfig servletConfig) throws ServletException { super.init(config); }