开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第12天,点击查看活动详情
ServletConfig
-
什么是ServletConfig?
- Servlet对象的配置信息对象。
- ServletConfig对象中封装了web.xml文件中对应当前Servlet对象的标签中的配置信息。
-
一个Servlet对应一个ServletConfig对象。
-
Servlet对象是Tomcat服务器创建,并且ServletConfig对象也是Tomcat服务器创建。并且默认情况下,他们都是在用户发送第一次请求的时候创建。
-
Tomcat服务器调用Servlet对象的init方法的时候需要传一个ServletConfig对象的参数给init方法。
-
ServletConfig接口的实现类是Tomcat服务器给实现的。(Tomcat服务器说的就是WEB服务器。)
-
ServletConfig接口有哪些常用的方法?
-
public String getServletName(); // 获取配置文件中的servlet-name public Enumeration<String> getInitParameterNames(); // 获取所有的初始化参数的name public String getInitParameter(String name); // 通过初始化参数的name获取value Enumeration<String> names = config.getInitParameterNames(); while (names.hasMoreElements()) { out.print("<br>"); String key = names.nextElement(); out.print(key+ "=" + config.getInitParameter(key)); } public ServletContext getServletContext(); // 获取ServletContext对象 //看GenericServlet中源码发现其写了getInitParameterNames和getInitParameter方法,里面返回的就是config.getInitParameterNames()、config.getInitParameter(key),所以上面调用时不需要config. 而直接this. 或者啥也不写就行了,GenericServlet中源码如下: public String getInitParameter(String name) { return this.getServletConfig().getInitParameter(name); } public Enumeration<String> getInitParameterNames() { return this.getServletConfig().getInitParameterNames(); } //GenericServlet中也有getServletContext方法
-
-
配置Servlet对象的初始化信息:
- <servlet>
<servlet-name>cofig</servlet-name>
<servlet-class>com.jd.javaweb.servlet.ConfigTestServlet</servlet-class>
<!--配置Servlet对象初始化信息-->
<init-param>
<param-name>driver</param-name>
<param-value>com.mysql.jdbc.Driver</param-value>
</init-param>
<init-param>
<param-name>url</param-name>
<param-value>jdbc:mysql://localhost:3306/db01</param-value>
</init-param>
<init-param>
<param-name>user</param-name>
<param-value>root</param-value>
</init-param>
<init-param>
<param-name>pwd</param-name>
<param-value>123</param-value>
</init-param>
</servlet>
idea中如果启动服务后改了代码不想重启服务器怎么办?可以再点debug,选择:Update classes and resources,也可以设置自动刷新。