servletContext对象

ServletContext对象

  WEB容器在启动时,它会为每个WEB应用程序都创建一个对应的ServletContext对象,它代表当前web应用。

  1)ServletContext对象应用1:多个web组件之间使用它实现数据共享

  ServletConfig对象中维护了ServletContext对象的引用,开发人员在编写servlet时,可以通过ServletConfig.getServletContext方法获得ServletContext对象。由于一个WEB应用中的所有Servlet共享同一个ServletContext对象,因此Servlet对象之间可以通过ServletContext对象来实现通讯。ServletContext对象通常也被称之为context域对象。

2)注意:用类装载器读取资源文件时,千万要注意,资源文件绝对不能太大,否则极易导致内存溢出

 

例子:

servlet:

package com.bjsxt.context.servlet;

import java.io.IOException;

import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;


/**
 * ServletContext(I)
 *   Servlet上下文,又名application,
 *   对于一个web项目来说,只有全局唯一的一个ServletContext对象。
 *
 *用途:
 *1.获取全局配置文件的参数
 *2.获取web项目的绝对路径
 *3.用于获取WebRoot文件夹下的文件(.JSP,.PNG,.html,.doc,)资源
 * @author Administrator
 *
 */
public class LearnServletContext extends HttpServlet {
    
    @Override
    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //获取到servletContext对象1   (从当前Servlet对象获得)
        ServletContext c1=this.getServletContext();
        
        //获取到servletContext对象2  (从ServletConfig对象获得)
        ServletContext c2=this.getServletConfig().getServletContext();
        
        //获取到servletContext对象3   (从会话对象获取到,这是常用的方式)
        ServletContext c3=req.getSession().getServletContext();
        
        //判断对象是不是全局唯一
        System.out.println(c1==c2);
        System.out.println("对象标识:"+c1.hashCode()+"---"+c2.hashCode()+"---"+c3.hashCode());
        
        
        //用途
         //*1.获取全局配置文件的参数
          System.out.println(c1.getInitParameter("schoolmaster"));
          System.out.println(c1.getInitParameter("wife"));
        
          //*2.获取web项目的绝对路径
          System.out.println("web项目绝对路径:"+c2.getRealPath(""));
          System.out.println("web项目绝对路径:"+c2.getRealPath("/"));
          System.out.println("web项目绝对路径:"+c2.getRealPath("/upload"));
          
         //*3.用于获取WebRoot文件夹下的文件(.JSP,.PNG,.html,.doc,)资源
          //获取src下的文件资源
          //LearnServletContext.class.getClassLoader().getResourceAsStream("DBUtils.properties");
          //Thread.currentThread().getContextClassLoader().getResourceAsStream("DBUtils.properties");
          
          //获取WebRoot文件夹下的文件资源
          c1.getResourceAsStream("index.jsp");
          
    }

}

 

web.xml:

<?xml version="1.0" encoding="UTF-8"?>
<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_2_5.xsd" id="WebApp_ID" version="2.5">
  <display-name>web_project_1018_servletcontext</display-name>
 
  <context-param>
     <description>全局参数信息描述</description>
     <param-name>schoolmaster</param-name>
     <param-value>LiYi</param-value>
  </context-param>
  <context-param>
     <description>全局参数信息描述</description>
     <param-name>wife</param-name>
     <param-value>liyi.girl</param-value>
  </context-param>
 
 
  <servlet>
    <servlet-name>LearnServletContext</servlet-name>
    <servlet-class>com.bjsxt.context.servlet.LearnServletContext</servlet-class>
  </servlet>

  <servlet-mapping>
    <servlet-name>LearnServletContext</servlet-name>
    <url-pattern>/context.action</url-pattern>
  </servlet-mapping>
  <welcome-file-list>
    <welcome-file>index.html</welcome-file>
    <welcome-file>index.htm</welcome-file>
    <welcome-file>index.jsp</welcome-file>
    <welcome-file>default.html</welcome-file>
    <welcome-file>default.htm</welcome-file>
    <welcome-file>default.jsp</welcome-file>
  </welcome-file-list>
</web-app>

转载于:https://www.cnblogs.com/z0228-0322x/p/6160840.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
ServletContextJava Web一个重要对象,表示整个Web应用程序的上下文环境。它是一个接口,提供了许多方法,用于获取Web应用程序的相关信息,例如应用程序的名称、版本、servlet上下文参数、初始化参数等。 以下是ServletContext对象的一些常用方法和用法: 1. 获取应用程序的名称和版本: String appName = context.getServletContextName(); //获取应用程序名称 String appVersion = context.getMajorVersion() + "." + context.getMinorVersion(); //获取应用程序版本号 2. 获取servlet上下文参数: String paramValue = context.getInitParameter("paramName"); //获取指定参数的值 Enumeration<String> paramNames = context.getInitParameterNames(); //获取所有参数名称 3. 获取应用程序的真实路径: String realPath = context.getRealPath("/"); //获取应用程序的根目录真实路径 4. 获取应用程序的资源: InputStream input = context.getResourceAsStream("/path/to/resource"); //获取指定资源的输入流 URL resourceUrl = context.getResource("/path/to/resource"); //获取指定资源的URL 5. 获取应用程序的Servlet信息: ServletInfo info = context.getServletInfo(); //获取Servlet的信息 6. 获取应用程序的Session管理器: HttpSessionManager sessionMgr = context.getSessionManager(); //获取Session管理器 7. 获取应用程序的Mime类型: String mimeType = context.getMimeType("fileName"); //获取指定文件的Mime类型 8. 获取应用程序的Servlet上下文: ServletContext servletContext = context.getContext("/path/to/servlet"); //获取指定Servlet的上下文 总之,ServletContext对象提供了一种方便的方式来获取Web应用程序的各种信息和资源,使得开发人员可以更方便地开发和管理Web应用程序。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值