JavaWeb核心编程之(三.4)Servlet Context 配置

ServletContext
Servlet引擎为每个Web应用程序都创建一个对应的ServletContext对象, ServletContext对象被包含在ServletConfig对象中, 调用ServletConfig.getServletContext方法可以返回ServletContext对象的引用.
由于一个WEB应用程序中的所有Servlet都共享同一个ServletCOntext对象, 所以ServletContext对象被称之为application对象(Web应用程序对象).
功能:
1> 获取WEB应用程序的初始化参数
2> 记录日志
3> application域范围的属性
4> 访问资源文件
5> 或许虚拟路径所映射的本地路径
6> WEB应用程序之间的访问
7> ServletContext的其他方法

 

配置方式

<context-param>
<param-name></param-name>
<param-value></param-value>
</context-param>

获得参数方法
获得servletcontext对象
ServletContext servletContext = servletConfig.getServletContext();
通过key获得value
servletContext.getInitParameter("")
获得keys

获取当前web应用的某一个文件的真实路径(绝对路径)--是获取的服务器上的物理路径
getRealPath();

获得当前web应用的名称
getContextPath

获得当前web应用的某一个文件对应的输入流
getResourceAsStream(String path) path的/为当前web应用的根目录
1> 需要处理异常
ClassLoader classLoader = getClass().getClassLoader();
InputStream is = classLoader.getResourceAsStream("文件");
2> 需要抛出异常
InputStream is2 = servletContext.getResourceAsStream("/WEB-INF/classes/文件");

 

实现实例

新建动态web工程-> 新建包 com.xiaoan.test->新建类TestContext

注意代码中红色部分, 为需要创建文件的时间节点

 1 package com.xiaoan.test;
 2 
 3 import java.io.IOException;
 4 import java.io.InputStream;
 5 import java.util.Enumeration;
 6 
 7 import javax.servlet.Servlet;
 8 import javax.servlet.ServletConfig;
 9 import javax.servlet.ServletContext;
10 import javax.servlet.ServletException;
11 import javax.servlet.ServletRequest;
12 import javax.servlet.ServletResponse;
13 
14 public class TestContext implements Servlet{
15 
16     @Override
17     public void destroy() {
18         // TODO Auto-generated method stub
19         
20     }
21 
22     @Override
23     public ServletConfig getServletConfig() {
24         // TODO Auto-generated method stub
25         return null;
26     }
27 
28     @Override
29     public String getServletInfo() {
30         // TODO Auto-generated method stub
31         return null;
32     }
33 
34     @Override
35     public void init(ServletConfig arg0) throws ServletException {
36         ServletContext servletContext = arg0.getServletContext();
37         //通过key获得value
38         String username = servletContext.getInitParameter("username");
39         System.out.println("username: " + username);
40         
41         //获得参数key列表
42         Enumeration<String> keys = servletContext.getInitParameterNames();
43         while(keys.hasMoreElements()){
44             String key = keys.nextElement();
45             String val = servletContext.getInitParameter(key);
46             System.out.println("key: " + key + ", val: " + val);
47         }
48         //在WebContent下新建 test.txt文件
49         //获取当前web应用的某一个文件的真实路径(绝对路径)--是获取的服务器上的物理路径
50         String filePath1 = servletContext.getRealPath("/test.txt");
51         System.out.println(filePath1);
52         
53         //获得当前web应用的名称
54         String webName = servletContext.getContextPath();
55         System.out.println("当前应用名为: " + webName);
56         
//在src下(与包同级)创建testStream.txt文件, 作为流输入文件 57 //获得当前web应用的某一个文件对应的输入流 58 //第一种 59 try { 60 ClassLoader classLoader = servletContext.getClassLoader(); 61 InputStream is = classLoader.getResourceAsStream("/testStream.txt"); 62 System.out.println(is); 63 } catch (Exception e) { 64 // TODO Auto-generated catch block 65 e.printStackTrace(); 66 } 67 //第二种 68 try { 69 InputStream is2 = servletContext.getResourceAsStream("/WEB-INF/classes/testStream.txt"); 70 System.out.println(is2); 71 } catch (Exception e) { 72 // TODO Auto-generated catch block 73 e.printStackTrace(); 74 } 75 } 76 77 @Override 78 public void service(ServletRequest arg0, ServletResponse arg1) throws ServletException, IOException { 79 // TODO Auto-generated method stub 80 81 } 82 83 }

web.xml文件配置

 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
 3   <display-name>testcontent</display-name>
 4   
 5   <context-param>
 6       <param-name>username</param-name>
 7       <param-value>xiaoan</param-value>
 8   </context-param>
 9   
10   <context-param>
11       <param-name>password</param-name>
12       <param-value>123456</param-value>
13   </context-param>
14   
15   
16   <servlet>
17       <servlet-name>tc</servlet-name>
18       <servlet-class>com.xiaoan.test.TestContext</servlet-class>
19   </servlet>
20   <servlet-mapping>
21       <servlet-name>tc</servlet-name>
22       <url-pattern>/</url-pattern>
23   </servlet-mapping>
24 </web-app>

 

posted @ 2016-07-20 00:18  安仲炜  阅读(2176)  评论(0编辑  收藏  举报