1、介绍
Servlet引擎为每个WEB应用程序都创建一个对应的ServletContext对象,ServletContext对象被包含在ServletConfig对象中,调用ServletConfig.getServletContext方法可以返回ServletContext对象的引用。
由于一个WEB应用程序中的所有Servlet都共享同一个ServletContext对象,所以,ServletContext对象被称之为 application 对象(Web应用程序对象)。
功能:
①获取WEB应用程序的初始化参数
②记录日志
③application域范围的属性
④访问资源文件
⑤获取虚拟路径所映射的本地路径
⑥WEB应用程序之间的访问
⑦ServletContext的其他方法
该对象代表当前 WEB 应用: 可以认为 SerlvetContext 是当前 WEB 应用的一个大管家. 可以从中获取到当前 WEB 应用的各个方面的信息.
2、可以由 SerlvetConfig 获取
public void init(ServletConfig arg0) throws ServletException { // TODO Auto-generated method stub // 获取 ServletContext 对象 ServletContext servletContext = arg0.getServletContext(); }
3、获取当前 WEB 应用的初始化参数
设置初始化参数: 可以为所有的 Servlet 所获取,而 Servlet 的初始化参数只用那个 Serlvet 可以获取。
<!-- 配置当前 WEB 应用的初始化参数 --> <context-param> <param-name>driver</param-name> <param-value>com.mysql.jdbc.Driver</param-value> </context-param>方法:
getInitParameter
getInitParameterNames
public void init(ServletConfig arg0) throws ServletException { // TODO Auto-generated method stub // 获取 ServletContext 对象 ServletContext servletContext = arg0.getServletContext(); String driver = servletContext.getInitParameter("driver"); System.out.println("dirver:" + driver); Enumeration<String> names2 = servletContext.getInitParameterNames(); while (names2.hasMoreElements()) { String name = names2.nextElement(); System.out.println("-->" + name); } }
为WEB应用程序设置初始化参数的好处在于不需要修改Servlet源程序,就可以改变一些参数信息。
4、获取当前 WEB 应用的某一个文件在服务器上的绝对路径, 而不是部署前的路径
public void init(ServletConfig arg0) throws ServletException { // TODO Auto-generated method stub // 获取 ServletContext 对象 ServletContext servletContext = arg0.getServletContext(); String realPath = servletContext.getRealPath("/WEB-INF/web.xml"); System.out.println(realPath); }
5、获取当前 WEB 应用的名称
public void init(ServletConfig arg0) throws ServletException { // TODO Auto-generated method stub // 获取 ServletContext 对象 ServletContext servletContext = arg0.getServletContext(); String contextPath = servletContext.getContextPath(); System.out.println(contextPath); }
6、获取当前 WEB 应用的某一个文件对应的输入流
getResourceAsStream(String path): path 的 / 为当前 WEB 应用的根目录.
public void init(ServletConfig arg0) throws ServletException { // TODO Auto-generated method stub // 获取 ServletContext 对象 ServletContext servletContext = arg0.getServletContext(); try { Properties pros = new Properties(); InputStream is = servletContext.getResourceAsStream("/WEB-INF/classes/jdbc.properties"); System.out.println(is); pros.load(is); System.out.println(pros.getProperty("name")); } catch (Exception e) { // TODO: handle exception e.printStackTrace(); } }