在 web.xml 中配置初始化参数:
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" id="WebApp_ID" version="3.1">
<display-name>02_Servlet</display-name>
<servlet>
<servlet-name>ConfigDemo1</servlet-name>
<servlet-class>com.demo.g_servletconfig.ConfigDemo1</servlet-class>
<init-param>
<param-name>path</param-name>
<param-value>D:/b.txt</param-value>
</init-param>
<init-param>
<param-name>AAA</param-name>
<param-value>AAA's value</param-value>
</init-param>
<init-param>
<param-name>BBB</param-name>
<param-value>BBB's value</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>ConfigDemo1</servlet-name>
<url-pattern>/ConfigDemo1</url-pattern>
</servlet-mapping>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
</web-app>
package com.demo.g_servletconfig;
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;
/*
ServletConfig 对象:
作用:
主要用于加载 servlet 的初始化参数;
ServletConfig 对象的创建和得到:
创建时机:在创建完 servlet 对象之后,在调用 init 方法之前;
得到对象: 1、直接从有参数的 init 方法中得到;
2、直接使用 this.getServletConfig() 也可以获取;
ServletConfig 的 API:
getInitParameter(String name):根据参数名获取参数值;
getInitParameterNames():获取所有参数的集合;
getServletName():获取 Servlet 的名称;
getServletContext():获取 Servlet 上下文对象;
*/
@SuppressWarnings("serial")
public class ConfigDemo1 extends HttpServlet {
// private ServletConfig config;
/*
* 1)、tomcat 服务器把 web.xml 中配置的初始化参数封装到 ServletConfig 中(在加载 web 应用的时候);
* 2)、tomcat 服务器调用 init 方法传入 ServletConfig 对象;
*/
// @Override
// public void init(ServletConfig config) throws ServletException {
// this.config = config;
// }
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
// 获取 servlet 的初始化参数(使用 init 方法获取的 ServletConfig 对象)
// String path = config.getInitParameter("path");
// 直接使用 this.getServletConfig() 获取 ServletConfig 对象
// 注意:使用 this.getServletConfig() 获取 ServletConfig 对象的时候 init 方法不能存在,否则获取不到 ServletConfig 对象;
String path = this.getServletConfig().getInitParameter("path");
// 读取文件数据
// String path = "D:/a.txt";
File file = new File(path);
FileReader reader = new FileReader(file);
BufferedReader bReader = new BufferedReader(reader);
String line = null;
while((line = bReader.readLine()) != null){
System.out.println(line);
}
bReader.close();
// 获取当前 servlet 的所有初始化参数
Enumeration<String> enums = this.getServletConfig().getInitParameterNames();
while(enums.hasMoreElements()){
String nextElement = enums.nextElement();
String initParameter = this.getServletConfig().getInitParameter(nextElement);
System.out.println(nextElement + "=" + initParameter);
}
// 获取当前 servlet 的名字
String servletName = this.getServletConfig().getServletName();
System.out.println(servletName);
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
doGet(req, resp);
}
}