1.ServletConfig对象的作用
主要是用于加载servlet的初始化参数。在一个web应用可以存在多个ServletConfig对象(一个Servlet对应一个ServletConfig对象)
2.对象创建和得到
创建时机: 在创建完servlet对象之后,在调用init方法之前创建。
得到对象: 直接从有参数的init方法中得到。上代码:
/**
* 1)tomcat服务器把这些参数会在加载web应用的时候,封装到ServletConfig对象中
* 2)tomcat服务器调用init方法传入ServletConfig对象
*/
@Override
public void init(ServletConfig config) throws ServletException {
this.config = config;
}
3.ServletConfig的API:
java.lang.String getInitParameter(java.lang.String name) ------------ 根据参数名获取参数值
java.util.Enumeration getInitParameterNames() ------------------------ 获取所有参数
ServletContext getServletContext() ----------------------------------------- 得到servlet上下文对象
java.lang.String getServletName() ------------------------------------------ 得到servlet的名称
4.servlet的初始化参数配置
实例代码:servlet
package com.ever.test;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.util.Enumeration;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class ConfigDemo extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
/**
* 读取servlet的初始参数
*/
String path = this.getServletConfig().getInitParameter("path");
File file = new File(path);
//读取b.txt文件的内容
BufferedReader br = new BufferedReader(new FileReader(file));
String str = null;
while( (str=br.readLine())!=null ){
System.out.println(str);
}
//查询当前servlet的所有初始化参数
Enumeration<String> enums = this.getServletConfig().getInitParameterNames();
while(enums.hasMoreElements()){
String paramName = enums.nextElement();
String paramValue = this.getServletConfig().getInitParameter(paramName);
//输出servlet的参数和对应的值
System.out.println(paramName+"="+paramValue);
}
//得到servlet的名称
String servletName = this.getServletConfig().getServletName();
System.out.println("servlet的名称:-----" + servletName);
}
}
web.xml:
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5"
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
<!-- servlet的配置 -->
<servlet>
<!-- servlet的内部名称,自定义。尽量有意义 -->
<servlet-name>ConfigDemo</servlet-name>
<!-- servlet的类全名: 包名+简单类名 -->
<servlet-class>com.ever.test.ConfigDemo</servlet-class>
<!-- 初始参数: 这些参数会在加载web应用的时候,封装到ServletConfig对象中 -->
<init-param>
<param-name>path</param-name>
<!-- 在f盘建立一个b.txt文件 -->
<param-value>f:/b.txt</param-value>
</init-param>
<init-param>
<param-name>BBB</param-name>
<param-value>BBB's value</param-value>
</init-param>
<init-param>
<param-name>CCCC</param-name>
<param-value>CCCC's value</param-value>
</init-param>
</servlet>
<!-- servlet的映射配置 -->
<servlet-mapping>
<!-- servlet的内部名称,一定要和上面的内部名称保持一致!! -->
<servlet-name>ConfigDemo</servlet-name>
<!-- servlet的映射路径(访问servlet的名称) -->
<url-pattern>/ConfigDemo</url-pattern>
</servlet-mapping>
</web-app>
控制台输出结果:
注意:
servlet的参数只能由当前的这个sevlet(ConfigDemo)中的ServletConfig对象获取
因为tomcat服务器把这些参数会在加载web应用的时候,封装到ServletConfig对象中,而在一个web应用可以存在多个ServletConfig对象(一个Servlet对应一个ServletConfig对象)