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>
  • 相关阅读:
    使用tcmalloc编译启动时宕机
    使用tcmalloc编译出现undefined reference to `sem_init'
    使用AddressSanitizer做内存分析(一)——入门篇
    VIM-美化你的标签栏
    Entity Framework Code First (六)存储过程
    Entity Framework Code First (五)Fluent API
    Entity Framework Code First (四)Fluent API
    Entity Framework Code First (三)Data Annotations
    Entity Framework Code First (二)Custom Conventions
    Entity Framework Code First (一)Conventions
  • 原文地址:https://www.cnblogs.com/azhw/p/5686797.html
Copyright © 2011-2022 走看看