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">
<!--配置当前的WEB应用的初始化参数-->
<context-param>
<param-name>driver</param-name>
<param-value>com.mysql.jdbc.Driver</param-value>
</context-param>
<context-param>
<param-name>jdbcUrl</param-name>
<param-value>jdbc:mysql:///test</param-value>
</context-param>
<!--配置Servlet-->
<servlet>
<!--Servlet注册的名字-->
<servlet-name>helloWorld</servlet-name>
<!--Servlet的全类名-->
<servlet-class>cn.limbo.servlet.HelloWorld</servlet-class>
<!--
指定Servle被创建的时机 ,若为负数,则在第一次请求被创建
若>=0,则在当前WEB应用中被Servlet容器加载的时候创建实例。
且值越小越先被创建
-->
<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>1</load-on-startup>
</servlet>
<servlet-mapping>
<!--需要和某一个Servlet节点的的servlet-name子节点的文本一致-->
<servlet-name>helloWorld</servlet-name>
<!--映射具体访问的路径: /表示当前WEB应用的根目录-->
<url-pattern>/hello</url-pattern>
</servlet-mapping>
</web-app>
HelloWorld.java
package cn.limbo.servlet;
import javax.servlet.*;
import java.io.IOException;
import java.io.InputStream;
import java.util.Enumeration;
/**
* Created by Limbo on 16/7/30.
*/
public class HelloWorld implements Servlet {
@Override
public void init(ServletConfig servletConfig) throws ServletException {
System.out.println("init");
String user = servletConfig.getInitParameter("user");
String password = servletConfig.getInitParameter("password");
System.out.println("user: " + user + " password: " + password);
Enumeration<String> names = servletConfig.getInitParameterNames();
while (names.hasMoreElements()) {
String name = names.nextElement();
String value = servletConfig.getInitParameter(name);
System.out.println("^^" + name + " : " + value);
}
//获取ServletContext对象,可以获取到当前web应用的各个信息
ServletContext context = servletConfig.getServletContext();
//1.获取当前WEB应用的初始化参数
//区别:ServletContext可以被每一个Servlet访问到从而去参数,而ServletConfig只能为当前的servlet访问到,并取配好的参数
String driver = context.getInitParameter("driver");
System.out.println("driver-->" + driver);
Enumeration<String> names2 = context.getInitParameterNames();
while(names2.hasMoreElements())
{
String name = names2.nextElement();
String value = context.getInitParameter(name);
System.out.println("name-->" + name + " : " + value);
}
//获取当前WEB应用的某一个文件在服务器上的绝对路径,而不是部署前的路径
String realPath = context.getRealPath("/");
System.out.println(realPath);
//获取当前WEB应用的名称
String contextPath = context.getContextPath();
System.out.println(contextPath);
//获取当前WEB应用的某一文件对应的输入流
//String resource = context.getResourceAsStream("/"); // "/" 的意思是web应用的根目录
ClassLoader classLoader = getClass().getClassLoader();
InputStream in = classLoader.getResourceAsStream("jdbc.properties");
System.out.println("1. " + in );
InputStream in2 = context.getResourceAsStream("/WEB-INF/classes/jdbc.properties");
System.out.println("2. " + in2);
}
@Override
public ServletConfig getServletConfig() {
System.out.println("ServletConfig");
return null;
}
@Override
public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
System.out.println("Service");
}
@Override
public String getServletInfo() {
System.out.println("getServletInfo");
return null;
}
@Override
public void destroy() {
System.out.println("destroy");
}
public HelloWorld() {
System.out.println("HelloWorld Constructor");
}
}