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>

时间: 2024-12-19 22:12:23

servletContext对象的相关文章

在Servlet使用getServletContext()获取ServletContext对象出现java.lang.NullPointerException(空指针)异常的解决办法

今天遇到了一个在servlet的service方法中获取ServletContext对象出现java.lang.NullPointerException(空指针)异常,代码如下: 1 //获取ServletContext对象 2 ServletContext servletContext = this.getServletContext(); 这个问题很奇怪,也是第一次遇到,因为以前在servlet的doGet/doPost方法中要获取ServletContext对象时都是这样写的,也没有出现过

小谈-—ServletConfig对象和servletContext对象

一.servletContext概述 servletContext对象是Servlet三大域对象之一,每个Web应用程序都拥有一个ServletContext对象,该对象是Web应用程序的全局对象或者上下文.Tomcat服务器在启动时,会自动创建一个ServletContext对象,在关闭时,会自动销毁这个ServletContext对象.每个Web应用程序只拥有一个ServletContext对象,ServletContext对象可以在整个Web应用中共享数据资源. 生命周期很长 每个web应

ServletContext对象(每个工程只有一个此对象)

一]重点方法:        1>存取对象                        void setAttribute(String name, Object object);//将object存入ServletContext对象中,并取名为name(方便取出,与Map类似)                        Object getAttribute(String name);//获取name对应的对象        2>解析web.xml中<context-param&

ServletConfig与ServletContext对象详解

一.ServletConfig对象    在Servlet的配置文件中,可以使用一个或多个<init-param>标签为servlet配置一些初始化参数.(配置在某个servlet标签或者整个web-app下) 当servlet配置了初始化参数后,web容器在创建servlet实例对象时,会自动将这些初始化参数封装到ServletConfig对象中,并在调用servlet的init方法时,将ServletConfig对象传递给servlet.进而,程序员通过ServletConfig对象就可以

mvc-servlet---ServletConfig与ServletContext对象详解(转载)

ServletConfig与ServletContext对象详解 一.ServletConfig对象    在Servlet的配置文件中,可以使用一个或多个<init-param>标签为servlet配置一些初始化参数.(配置在某个servlet标签或者整个web-app下) 当servlet配置了初始化参数后,web容器在创建servlet实例对象时,会自动将这些初始化参数封装到ServletConfig对象中,并在 调用servlet的init方法时,将ServletConfig对象传递给

使用ServletContext对象读取资源文件

备注:本文以properties文件为例 一.通过ServletContext读取文件 1.通过ServletContext读取放置在src下的properties文件 package com; import java.io.IOException;import java.io.InputStream;import java.util.Properties; import javax.servlet.ServletException;import javax.servlet.annotation

[Servlet]研究ServletContext对象

ServletContext概述 ServletContext对象是Servlet三大域对象之一,每个Web应用程序都拥有一个ServletContext对象,该对象是Web应用程序的全局对象或者上下文.Tomcat服务器在启动时,会自动创建一个ServletContext对象,在关闭时,会自动销毁这个ServletContext对象.每个Web应用程序只拥有一个ServletContext对象,ServletContext对象可以在整个Web应用中共享数据资源. 下列是ServletConte

ServletContext对象的使用

得到web应用路径 getContextPath();用于请求重定向的资源名称中 1 public class ContextDemo extends HttpServlet { 2 @Override 3 protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { 4 //1.得到ServletContext对象 5 //Servlet

重温Servlet学习笔记--servletContext对象

一个项目中只有一个ServletContext对象,我们可以在多个servlet中获取这个唯一的对象,使用它可以给多个servlet传递数据,我们通常成servletContext为上下文对象.这个对象在tomcat启动时就创建,在tomcat关闭时才被销毁.有时候我们也把这个对象叫做application. ServletContext对象的作用就是在整个web应用的动态资源之间共享数据,比如在AServlet中向ServletContext中保存一个数据,然后在Bservelt中获取这个数据