1.首先找到ServletConfig的API:
ServletConfig封装了servlet的配置信息,并且可以获取servletContext对象。
ServletConfig共有四个方法:
1.getInitParameter:获取指定初始化名的初始化值。
2.
getInitParameterNames():获取所有初始化参数名组成的
Enumeration对象。
3.
getServletContext():获取
ServletContext对象。
4.
getServletName():获取servlet配置名称。
2.项目的目录结构:
3.HelloServlet.java
package com.dao.chu;
import java.io.IOException;
import java.util.Enumeration;
import javax.servlet.Servlet;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
/**
*
* Title: HelloServlet Description:实现Servlet接口的类 </p>
*/
public class HelloServlet implements Servlet {
@Override
public void destroy() {
System.out.println("destroy...");
}
@Override
public ServletConfig getServletConfig() {
System.out.println("getServletConfig...");
return null;
}
@Override
public String getServletInfo() {
System.out.println("getServletInfo...");
return null;
}
@Override
public void init(ServletConfig servletConfig) throws ServletException {
System.out.println("init...");
// 获取参数名为user的参数值
String userValue = servletConfig.getInitParameter("user");
System.out.println("userValue is " + userValue);
// 获取参数名为password的参数值
String passwordValue = servletConfig.getInitParameter("password");
System.out.println("passwordValue is " + passwordValue);
// 获取配置的所有初始化参数名组成的Enumeration
Enumeration<String> parameterNames = servletConfig
.getInitParameterNames();
// 循环
while (parameterNames.hasMoreElements()) {
String name = (String) parameterNames.nextElement();
// 打印所有循环出来的参数名
System.out.println("name is " + name);
// 用参数名来获取所有的参数值,并打印出来
String value = servletConfig.getInitParameter(name);
System.out.println("value is " + value);
}
/* 获取配置的servlet名称 */
String servletName = servletConfig.getServletName();
System.out.println("servletName: " + servletName);
}
@Override
public void service(ServletRequest arg0, ServletResponse arg1)
throws ServletException, IOException {
System.out.println("service...");
}
public HelloServlet() {
System.out.println("HelloServlet's constructor..");
}
}
4.SecondHelloServlet
package com.dao.chu;
import java.io.IOException;
import javax.servlet.Servlet;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
/**
*
* Title: HelloServlet
* Description:第二个实现Servlet接口的类
* </p>
*/
public class SecondHelloServlet implements Servlet{
@Override
public void destroy() {
System.out.println("second destroy..");
}
@Override
public ServletConfig getServletConfig() {
System.out.println("second getServletConfig..");
return null;
}
@Override
public String getServletInfo() {
System.out.println("second getServletInfo..");
return null;
}
@Override
public void init(ServletConfig arg0) throws ServletException {
System.out.println("second init..");
}
@Override
public void service(ServletRequest arg0, ServletResponse arg1)
throws ServletException, IOException {
System.out.println("second service..");
}
public SecondHelloServlet(){
System.out.println("SecondHelloServlet's constructor..");
}
}
5.web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://java.sun.com/xml/ns/javaee"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
id="WebApp_ID" version="3.0">
<!-- 配置和映射servlet -->
<!-- helloServlet -->
<servlet>
<!-- servlet注册的名字 -->
<servlet-name>helloServlet</servlet-name>
<!-- servlet的全类名 -->
<servlet-class>com.dao.chu.HelloServlet</servlet-class>
<!-- 配置servlet的初始化参数 ,要放在load-on-startup节点 前面-->
<init-param>
<!-- 参数名 -->
<param-name>user</param-name>
<!-- 参数值 -->
<param-value>root</param-value>
</init-param>
<init-param>
<param-name>password</param-name>
<param-value>123456</param-value>
</init-param>
<!-- load-on-startup节点 -->
<load-on-startup>0</load-on-startup>
</servlet>
<servlet-mapping>
<!-- 需要和某一个servlet子节点的servlet-name 子节点的文本节点一致 -->
<servlet-name>helloServlet</servlet-name>
<!-- 映射的具体访问路径:/代表当前WEB应用的根目录 -->
<url-pattern>/hello</url-pattern>
</servlet-mapping>
<!-- secondHelloServlet -->
<servlet>
<!-- servlet注册的名字 -->
<servlet-name>secondHelloServlet</servlet-name>
<!-- servlet的全类名 -->
<servlet-class>com.dao.chu.SecondHelloServlet</servlet-class>
<!-- load-on-startup节点 -->
<load-on-startup>1</load-on-startup>
</servlet>
</web-app>
6.打印信息
6.分析
我们把打印信息分成三块,第1,2块是HelloServlet的执行,第3块是SecondHelloSerclet的执行,他们的先后执行顺序在总结(2)中有详细说明,这里不再叙述。
在第2块中主要运用了ServletConfig对象的getInitParameter,
getInitParameterNames,
getServletName三个方法,方法的作用已在本文的第1点中说明。
附:
J2EE1.5_API下载地址:点击打开链接
本次javaWeb总结(3)源码:点击打开链接
javaWeb总结(2)源码:点击打开链接
javaWeb总结(1)源码点击打开链接
为了尊重原作者,下面粘贴佟刚老师视频的地址: