ServletConfig
类是Servlet 程序的配置信息类。
Servlet 程序和 ServletConfig
对象都是由 Tomcat 负责创建,我们负责使用。
Servlet 程序默认是第一次访问的时候创建,ServletConfig
是每个 Servlet 程序创建时,就创建一个对应的 ServletConfig
对象。
ServletConfig
类的三大作用
- 可以获取 Servlet 程序的别名
servlet-name
的值 - 获取初始化参数
init-param
- 获取
ServletContext
对象
web.xml
文件
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
version="3.1">
<!-- servlet标签给Tomcat配置Servlet程序 -->
<servlet>
<!-- servlet-name标签给Servlet程序起一个别名(一般是类名)-->
<servlet-name>HelloServlet</servlet-name>
<!-- servlet-class标签是Servlet程序的全类名-->
<servlet-class>Servlet.HelloServlet</servlet-class>
<!-- init-param 是初始化参数-->
<init-param>
<!--参数名-->
<param-name>username</param-name>
<!--参数值-->
<param-value>root</param-value>
</init-param>
<init-param>
<param-name>url</param-name>
<param-value>jdbc:mysql://localhost:3306/test</param-value>
</init-param>
</servlet>
<!-- servlet-mapping标签给servlet程序配置访问地址-->
<servlet-mapping>
<!-- servlet-name标签的作用是告诉服务器,我当前配置的地址给哪个Servlet程序使用-->
<servlet-name>HelloServlet</servlet-name>
<!-- url-pattern标签配置访问地址
/:斜杠在服务器解析的时候,表示地址为:http://ip:port/工程路径
hello: 表示地址为http://ip:port/过程路径/hello
-->
<url-pattern>/hello</url-pattern>
</servlet-mapping>
</web-app>
init()
方法
@Override
public void init(ServletConfig servletConfig) throws ServletException {
System.out.println("第二步:执行init初始化方法");
// 1、可以获取 Servlet 程序的别名 servlet-name 的值
System.out.println("HelloServlet程序的别名是:" + servletConfig.getServletName());
// 2、获取初始化参数 init-param
System.out.println("初始化参数username的值是:" + servletConfig.getInitParameter("username"));
System.out.println("初始化参数url的值是:" + servletConfig.getInitParameter("url"));
// 3、获取 ServletContext 对象
System.out.println(servletConfig.getServletContext());
}
输出结果:
继承时,子类重写init()
方法时一定要调用父类的init()
方法。
public class HelloServlet2 extends HttpServlet{
@Override
public void init() throws ServletException {
super.init();
System.out.println("子类重写init初始化方法");
}
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
System.out.println("调用HelloServlet2的doGet方法");
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
System.out.println("调用HelloServlet2的doPost方法");
}
}