[原创]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_workspase\eclipes\.metadata\.plugins\org.eclipse.wst.server.core\tmp1\wtpwebapps\javaWEB\hello.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)理解各个方法