[原创]java WEB学习笔记06:ServletContext接口

本博客为原创:综合 尚硅谷(http://www.atguigu.com)的系统教程(深表感谢)和 网络上的现有资源(博客,文档,图书等),资源的出处我会标明

本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用

内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系。

本人互联网技术爱好者,互联网技术发烧友

微博:伊直都在0221

QQ:951226918

-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

1.关于ServletContex

  1)Servlet引擎为每个WEB应用程序都创建一个对应的ServletContext对象,ServletContext对象被包含在ServletConfig(关于servletConfig参考另外一篇博文)对象中,调用ServletConfig.getServletContext方法可以返回ServletContext对象的引用

  2)由于一个WEB应用程序中的所有Servlet都共享同一个ServletContext对象,所以,ServletContext对象被称之为 application 对象(Web应用程序对象); 很重要

  3)可以实现的功能(获取当前应用的各个方面的信息)

    >获取WEB应用程序的初始化参数

    >记录日志 

    >application域范围的属性

      >访问资源文件

      >获取虚拟路径所映射的本地路径 

      >WEB应用程序之间的访问 

2.配置ServletContext:在当前的WEB目录下的 web.xml配置,每配置一个参数,就必须重新创建一个<context-param> </context-param>节点,配置完成后,对于任何一个servlet都可以获取到ServletContex的初始化参数,二servlet的初始化参数,只有当前的servlet能获取

 1     <!-- 配置当前 WEB 应用的初始化参数 -->
 2     <context-param>
 3         <param-name>driver</param-name>
 4         <param-value>com.mysql.jdbc.Driver</param-value>
 5     </context-param>
 6     
 7     <context-param>
 8         <param-name>jdbcUrl</param-name>
 9         <param-value>jdbc:mysql:///test</param-value>
10     </context-param>

3.获取ServletContext的配置信息

  1)getInitParameter(String parameterName):获取初始化driver的参数值

   2)getInitParameterNames():获取所有的parameterName值

  3)getRealPath(String path):获取当前应用的某一个文件在服务器上的绝对路径,必须在WebContent文件夹下

  4)getContexPath():获取当前应用的名称 

  5)getResourceAsStream(String path) path的 / 为相对于 WEB 应用的根目录:获取当前WEB应用的某一个文件对应的输入流(很重要),在src下创建jdbc.properties

 1 @Override
 2     public void init(ServletConfig servletConfig) throws ServletException {
 3         System.out.println("init");
 4 
 5         // 1.获取ServletContext对象,当前的web应用的信息
 6         ServletContext servletContext = servletConfig.getServletContext();
 7 
 8         // 2.获取初始化driver的参数值
 9         String driver = servletContext.getInitParameter("driver");
10         System.out.println("driver :" + driver);// output -> driver
11                                                 // :com.mysql.jdbc.Driver
12 
13         // 3.获取所有的parameterName值,输出
14         Enumeration<String> names = servletContext.getInitParameterNames();
15         while (names.hasMoreElements()) {
16             String name = names.nextElement();
17             System.out.println(name);// output -> driver jdbcUrl
18         }
19 
20         // 4.获取当前应用的某一个文件在服务器上的绝对路径,必须在WebContent文件夹下
21         String realPath = servletContext.getRealPath("/hello.jsp");
22         // output
23         // -> E:java_workspaseeclipes.metadata.pluginsorg.eclipse.wst.server.core	mp1wtpwebappsjavaWEBhello.jsp
24         System.out.println(realPath);
25 
26         // 5.获取当前应用的名称
27         String contextPath = servletContext.getContextPath();
28         System.out.println(contextPath); // output -> /javaWEB
29 
30         // 获取当前WEB应用的某一个文件对应的输入流
31         // 方式一:
32         try {
33             ClassLoader classloader = getClass().getClassLoader();
34             InputStream is = classloader.getResourceAsStream("jdbc.properties");
35             System.out.println("1." + is);
36         } catch (Exception e) {
37             e.printStackTrace();
38         }
39 
40         // 方式二:
41         try {
42             // 路径为想对于web项目在服务器中的绝对路径 ,其中/为 根 :即 开发中的 WebContent
43             InputStream is2 = servletContext
44                     .getResourceAsStream("/WEB-INF/classes/jdbc.properties");
45             System.out.println("2." + is2);
46         } catch (Exception e) {
47 
48             e.printStackTrace();
49         }
50 
51     }

4.总结

  1)充分理解 ServletContext对象:代表的是整个WEB应用

  2)理解各个方法