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. <servlet>
  16. <servlet-name>tc</servlet-name>
  17. <servlet-class>com.xiaoan.test.TestContext</servlet-class>
  18. </servlet>
  19. <servlet-mapping>
  20. <servlet-name>tc</servlet-name>
  21. <url-pattern>/</url-pattern>
  22. </servlet-mapping>
  23. </web-app>

JavaWeb核心编程之(三.4)Servlet Context 配置的更多相关文章

  1. JavaWeb核心编程之(三.3)Servlet Init 配置

    Servlet初始化 可以传入一些参数 通过 <init-param>来配置 新建 servletinit项目 新建包 com.xiaoan.test->new Class(Test ...

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

    Servlet配置 1.配置Serlvet加载时机 2.配置多映射 配置加载时机 新建项目config->创建包com.xiaoan.config->创建类FirstServlet imp ...

  3. JavaWeb核心编程之(三.6)HttpServlet

    之前都是集成的Servlet真的太过于繁琐了, Servlet接口提供了一个实现类 为HttpServlet  只要实现doGet 和doPost方法就可以了 仍然以一个表单为例 新建一个web工程 ...

  4. JavaWeb核心编程之(三.5)HTTP请求和接受表单数据

    HTTP简介WEB浏览器与WEB拂去其之间的一问一答的交互过程, 必须遵循一定的规则,这个规则就是HTTP协议HTTP是hypertext transfer protocol(超文本传输协议)的简写, ...

  5. JavaWeb核心编程之(三.1)ServletHello

    Servlet简介Java Servlet是和平台无关的服务器端组件,它运行在Servlet容器中. Servlet容器负责Servlet和客户的通信以及调用Servlet方法, 在这里Servlet ...

  6. JavaWeb学习笔记(三)—— Servlet

    一.Servlet概述 1.1 什么是Servlet Servlet是是sun公司提供一套规范(接口),是JavaWeb的三大组件之一(Servlet.Filter.Listener),它属于动态资源 ...

  7. JavaWeb学习总结(三)—Servlet

    1. 什么是Servlet * Servlet是JavaWeb三大组件之一(Servlet.Filter.Listener) ,Servlet是用来处理客户端请求的动态资源,按照一种约定俗成的称呼习惯 ...

  8. JavaWeb核心编程之(四.1)JSP

    JSP简介: JSP是简化Servlet编写的一种技术, 它将Java代码和HTML语句混合在一个文件中编写, 只对网页中药动态产生的内容采用Java代码来编写, 而对固定不变的静态内容采用普通的静态 ...

  9. 【1】python核心编程 第三章

    1.继续( \ ) 有两种例外情况一个语句不使用反斜线也可以跨行.在使用闭合操作符时,单一语句可以跨多行,例如:在含有小括号.中括号.花括号时可以多行书写.另外就是三引号包括下的字符串也可以跨行书写 ...

随机推荐

  1. 最新的手机/移动设备jQuery插件

    随着互联网的流行,移动网站开始急速增加,在2014年手机网站将会出现很多,所以手机网站是必须要学会制作的.手机网站不像桌面平台一样制作,否则会影响显示效果,目前大部分手机网站使用响应式设计技术,而且也 ...

  2. 【奇偶剪枝】【HDU1010】Tempter of the Bone

    题意:输入一个n*m的迷宫,和一个T:可以在迷宫中生存的最大时间.S为起点,D为终点.并且,每个格子只能踩一次,且只能维持一秒,然后该块地板就会塌陷.所以你必须每秒走一步,且到D点时,所用时间为T. ...

  3. LeetCode Day4——Factorial Trailing Zeroes

    /* * Problem 172: Factorial Trailing Zeroes * Given an integer n, return the number of trailing zero ...

  4. 关于oracle卸载没有卸载完全的问题

    1.关闭oracle所有的服务.可以在windows的服务管理器中关闭: 2.打开注册表:regedit 打开路径: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlS ...

  5. windows下使用vnc viewer远程连接Linux桌面(转)

    在windows下使用vnc viewer远程连接Linux桌面,主要配置步骤: Linux: 1.rpm -qa vnc //查看是否安装vnc服务,如果没有安装,可以使用yum,或者rpm进行安装 ...

  6. python基础之 Python os._exit() sys.exit() exit()区别

    Python退出程序的方式有两种:os._exit(), sys.exit() 1)os._exit() 直接退出 Python程序,其后的代码也不会继续执行. 2)sys.exit() 引发一个 S ...

  7. 关于Eclipse的编码配置和字体大小设置

    编码设置 1.工作空间编码:Window-->Preferences-->General-->Workspace 2.工程文件编码:项目-->Properties-->R ...

  8. Android03-Activity生命周期及启动模式

    1.返回栈概念 2.生命周期 1. onCreate() 这个方法你已经看到过很多次了,每个活动中我们都重写了这个方法,它会在活动 第一次被创建的时候调用.你应该在这个方法中完成活动的初始化操作,比如 ...

  9. 各种HelloWorld

    http://blog.csdn.net/whxaing2011/article/details/20736759 ES总结: http://www.cnblogs.com/sunxucool/p/3 ...

  10. Jdt Javax

    http://www.javablogging.com/dynamic-in-memory-compilation/ http://www.java2s.com/Code/Java/JDK-6/Com ...