zoukankan      html  css  js  c++  java
  • 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>
  • 相关阅读:
    python 远程 部署和运行
    学习笔记——UML类图
    Core Data 多线程操作实战篇
    Core Data系列六——Custom Migration
    Core Data系列五——数据迁移方案
    NSOperation以及NSOperationQueue的使用
    Magical Record设计小谈
    Core Data系列四——多线程设计
    Core Data系列三——基本使用
    Core Data系列二——基础概念
  • 原文地址:https://www.cnblogs.com/azhw/p/5686797.html
Copyright © 2011-2022 走看看