文章目录
ServletConfig
简介
ServletConfig 类从类名上来看,就知道是 Servlet 程序的配置信息类。
Servlet 程序和 ServletConfig 对象都是由 Tomcat 负责创建,我们负责使用。
Servlet 程序默认是第一次访问的时候创建,ServletConfig 是每个 Servlet 程序创建时,就创建一个对应的 ServletConfig对象。
ServletConfig 类的三大作用
- 1、可以获取 Servlet 程序的别名 servlet-name 的值
- 2、获取初始化参数 init-param
- 3、获取 ServletContext 对象
简单使用
Java-Servlet类
package com.stackery.servlet;
import javax.servlet.*;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import java.io.IOException;
public class HelloServlet implements Servlet {
@Override
public void init(ServletConfig servletConfig) throws ServletException {
// 1、可以获取 Servlet 程序的别名 servlet-name 的值
System.out.println(servletConfig.getServletName());
// 2、获取初始化参数 init-param
System.out.println("初始化参数username的值为"+servletConfig.getInitParameter("username"));
System.out.println("初始化参数password的值为"+servletConfig.getInitParameter("password"));
// 3、获取 ServletContext 对象
System.out.println(servletConfig.getServletContext());
}
}
Web.xml中配置init-param
<servlet>
<!-- servlet-name标签给servlet起一个别名-->
<servlet-name>HelloServlet</servlet-name>
<!-- servlet-class标签是servlet的全类名-->
<servlet-class>com.stackery.servlet.HelloServlet</servlet-class>
<!-- init-param是初始化参数 -->
<init-param>
<param-name>username</param-name>
<param-value>123</param-value>
</init-param>
<init-param>
<param-name>password</param-name>
<param-value>345</param-value>
</init-param>
</servlet>
<!-- servlet-mapping标签给程序配置访问地址-->
<servlet-mapping>
<!-- servlet-name标签告诉服务器,当前配置地址给哪个Servlet程序使用 -->
<servlet-name>HelloServlet</servlet-name>
<!-- url-pattern 配置访问地址-->
<url-pattern>/hello</url-pattern>
</servlet-mapping>
在继承自HttpServlet的类中如何调用
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
System.out.println("GET请求");;
ServletConfig servletConfig = getServletConfig();
// 1、可以获取 Servlet 程序的别名 servlet-name 的值
System.out.println(servletConfig.getServletName());
// 2、获取初始化参数 init-param
System.out.println("初始化参数username的值为"+servletConfig.getInitParameter("username"));
System.out.println("初始化参数password的值为"+servletConfig.getInitParameter("password"));
// 3、获取 ServletContext 对象
System.out.println(servletConfig.getServletContext());
}
误区
在HttpServlet中如果重写了init方法,那么必须要调用父类方法init,否则在获取ServletConfig就会报错
@Override
public void init(ServletConfig config) throws ServletException {
super.init(config);
System.out.println("init被调用了");
}