(1)ServletContext简介
web容器在启动时,它会为每个web应用程序都创建一个ServletContext对象,它代表当前的web应用
ServletConfig实例中维护了一个ServletContext对象,所以在编写Servlet的时候,可以通过ServletConfig.getServletContext方法来获得ServletContext对象
(2)ServletContext应用
1.获取web应用的初始化参数
在web.xml中使用<context-param>标签可以配置ServletContext的初始化参数
<context-param>
<param-name>appName</param-name>
<param-value>servlet</param-value>
</context-param>
<context-param>
<param-name>version</param-name>
<param-value>1.0.0</param-value>
</context-param>
在代码中获取:
package com.learn.servlet;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletConfig;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* Servlet implementation class FirstServlet
*/
public class FirstServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
ServletContext context = this.getServletContext();
String appName = context.getInitParameter("appName");
String version = context.getInitParameter("version");
System.out.println(appName);
System.out.println(version);
}
}
结果在控制台打印为:
servlet
1.0.0
2.获取资源文件
1)获取资源文件的绝对路径
package com.learn.servlet;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletConfig;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* Servlet implementation class FirstServlet
*/
public class FirstServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
ServletContext context = this.getServletContext();
String path = context.getRealPath("WEB-INF/index.html");
System.out.println(path);
}
}
控制台打印结果为:
D:\apache-tomcat-6.0.33\wtpwebapps\LearnServlet\WEB-INF\index.html
2)读取资源文件
db.properties其中数据为:
username = jackson
password = 123
读取资源文件:
package com.learn.servlet;
import java.io.IOException;
import java.io.InputStream;
import java.io.PrintWriter;
import java.util.Properties;
import javax.servlet.ServletConfig;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* Servlet implementation class FirstServlet
*/
public class FirstServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
ServletContext context = this.getServletContext();
InputStream in = context.getResourceAsStream("WEB-INF/classes/com/learn/servlet/db.properties");
Properties properties = new Properties();
properties.load(in);
System.out.println(properties.get("username"));
System.out.println(properties.get("password"));
}
}
结果为:
jackson
123