9.15JavaWeb之ServletConfig接口
什么是ServletConfig对象
概念:
-
容器初始化Servlet时为Servlet创建一个ServletConfig对象,将 ServletConfig 对象作为参数传递给 Servlet 。
作用:
-
通过 ServletConfig 对象即可获得当前 Servlet 的初始化参数信息。
特点:
-
一个Web容器可以存在多个ServletConfig对象
-
一个Servlet只能对应一个ServletConfig对象
获取ServletConfig对象
直接从带参的
init()
方法中提取调用GenericServlet提供的getServletConfig()方法获取
从带参的init()
方法中获取
示例代码:
package ServletPractice;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
/**
* 继承httpServlet抽象类,获取init方法里面的参数
* @since JDk 1.8
* @date 2021/09/15
* @author Lucifer
*/
public class MyServletDemoNo8 extends HttpServlet {
//Get方法
public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException {
//设置响应字符集
response.setContentType("text/html;charset=UTF-8");
//打印结果
PrintWriter writer = response.getWriter();
writer.write("HelloNo8");
writer.close();
}
//Post方法
public void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException {
doGet(request, response);
}
//初始化方法
public void init(ServletConfig config) throws ServletException {
//从带参的init方法中提取ServletConfig对象
this.getServletConfig(); //因为HttpServlet继承了抽象类GenericServlet,get方法再GenericServlet当中,所以可以调用
}
}
调用GenericServlet提供的getServletConfig方法
ServletConfig servletConfig = this.getServletConfig();
ServletConfig接口
javax.servlet 包提供了一个 ServletConfig 接口,该接口中提供了以下方法:
返回值类型 | 方法 | 功能描述 |
---|---|---|
String | getInitParameter(String name) | 根据初始化参数名 name,返回对应的初始化参数值。 |
Enumeration<String> |
getInitParameterNames() | 返回 Servlet 所有的初始化参数名的枚举集合,如果该 Servlet 没有初始化参数,则返回一个空的集合。 |
ServletContext | getServletContext() | 返回一个代表当前 Web 应用的 ServletContext 对象。 |
String | getServletName() | 返回 Servlet 的名字,即 web.xml 中 <servlet-name> 元素的值。 |
配置Servlet初始化参数
使用web.xml配置初始化参数
使用@WebServlet配置初始化参数
使用web.xml配置初始化参数
实现方法:
-
新增了一个子元素:
-
<init-param>
-
<param-name>
-
<param-value>
-
-
示例xml:
使用@WebServlet配置初始化参数
特点:
-
initParams
是一个属性,相当于一个列表 -
@WebInitParam
相当于一个键值对--->key、value的形式
示例代码:
package ServletPractice;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebInitParam;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
/**
* 使用@WebServlet注释+参数实现配置初始化参数的目的
* @since JDK 1.8
* @date 2021/09/15
* @author Lucifer
*/
获取Servlet初始化参数示例
结合前面提到的知识内容全部一次性过一遍:
package ServletPractice;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebInitParam;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Enumeration;
/**
* 结合前面的Servlet获取Config对象和获取对象信息的知识
* @since JDK 1.8
* @date 2021/09/15
* @author Lucifer
*/
It's a lonely road!!!