ServletConfig对象和ServletContext对象

  ServletConfig对象是servlet配置对象,(web.xml中的)servlet信息封装在ServletConfig对象中,因此在一个web应用可存在多个ServletConfig。ServletContext对象是servlet上下文对象,而整个web.xml信息封装在ServletContext对象中,因此 一个web应用中只有一个servletcontext对象,可能存在多个servletconfig对象。

ServletConfig

创建:在创建完servlet对象之后,在调用init方法之前创建,直接从有参数的init方法中得到。

API:

1 java.lang.String getInitParameter(java.lang.String name)  根据参数名获取参数值
2 java.util.Enumeration getInitParameterNames()    获取所有参数
3 ServletContext getServletContext()     得到servlet上下文对象
4 java.lang.String getServletName()       得到servlet的名称

注意:servlet的参数只能由当前的这个sevlet获取。

如下,我想访问e盘下的某个文件,想通过web.xml中配置,在提交请求到服务器时访问。

web.xml

1  <servlet>
2     <servlet-name>ConfigDemo</servlet-name>
3     <servlet-class>gz.itcast.f_config.ConfigDemo</servlet-class>
4     <!-- 初始参数: 这些参数会在加载web应用的时候,封装到ServletConfig对象中 -->
5     <init-param>
6         <param-name>path</param-name>
7         <param-value>e:/b.txt</param-value>
8     </init-param>
9   </servlet>

ConfigDemo.java

public class ConfigDemo extends HttpServlet {
    /**
     * 以下两段代码GenericServlet已经写了,我们无需编写!!
     */
    /*private ServletConfig config;*/

    /**
     *  1)tomcat服务器把这些参数会在加载web应用的时候,封装到ServletConfig对象中
     *  2)tomcat服务器调用init方法传入ServletConfig对象
     */
    /*@Override
    public void init(ServletConfig config) throws ServletException {
        this.config = config;
    }*/

    public void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        /**
         * 读取servlet的初始参数
         */
        String path = this.getServletConfig().getInitParameter("path");

        File file = new File(path);
        //读取内容
        BufferedReader br = new BufferedReader(new FileReader(file));
        String str = null;
        while( (str=br.readLine())!=null ){
            System.out.println(str);
        }
}

ServletContext对象

核心API

java.lang.String getContextPath()   --得到当前web应用的路径

java.lang.String getInitParameter(java.lang.String name)  --得到web应用的初始化参数
java.util.Enumeration getInitParameterNames()  

void setAttribute(java.lang.String name, java.lang.Object object) --域对象有关的方法
java.lang.Object getAttribute(java.lang.String name)
void removeAttribute(java.lang.String name)  

RequestDispatcher getRequestDispatcher(java.lang.String path)   --转发(类似于重定向)

java.lang.String getRealPath(java.lang.String path)     --得到web应用的资源文件
java.io.InputStream getResourceAsStream(java.lang.String path)  

在web.xml配置web应用参数,如下:

<context-param>
        <param-name>AAA</param-name>
        <param-value>AAA‘s value</param-value>
</context-param>

在web.xml中配置了上述的参数,就相当于给整个web添加了一个新属性,那么可以通过ServletContext访问。而上边的在servlet中添加一个<init-param>,相当于某个web应用的某个特定的servlet添加了一个属性,所以只能通过该servlet的ServletConfig访问。下面的例子描述ServletContext如何访问:

public class ContextDemo2 extends HttpServlet {

    public void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        //得到SErvletContext对象
        ServletContext context = this.getServletContext();

        System.out.println("参数"+context.getInitParameter("AAA"));

        Enumeration<String> enums = context.getInitParameterNames();
        while(enums.hasMoreElements()){
            String paramName = enums.nextElement();
            String paramValue  =context.getInitParameter(paramName);
            System.out.println(paramName+"="+paramValue);
        }

        //尝试得到ConfigDemo中的servlet参数
        String path = this.getServletConfig().getInitParameter("path");
        System.out.println("path="+path);
    }

}
时间: 2024-07-31 12:15:54

ServletConfig对象和ServletContext对象的相关文章

小谈-—ServletConfig对象和servletContext对象

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

[Servlet]研究ServletContext对象

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

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

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

ServletContext对象初识

什么是ServletContext? ServletContext代表一个web应用的环境(上下文)对象,ServletContext对象内部封装的是该web应用的信息.一个web应用只有一个ServletContext对象.但是一个web应用有多个servlet对象. ServletContext的生命周期? 创建:该wwb应用被加载(服务器启动或发布web应用,前提是服务器是启动状态) 销毁:该wwb应用被卸载(服务器关闭或移除web应用) 如何获得ServletContext对象? Ser

三:ServletContext对象

一.ServletContext对象 1.什么是ServletContext对象 ServletContext代表是一个web应用的环境(上下文)对象,ServletContext对象 内部封装是该web应用的信息,ServletContext对象一个web应用只有一个 2.ServletContext对象的生命周期? 创建:该web应用被加载(服务器启动或发布web应用) 销毁:web应用被卸载(服务器关闭,移除该web应用) 3.怎样获得ServletContext对象 1)ServletC

ServletConfig与ServletContext对象详解

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

ServletConfig对象与ServletContext区别

介绍 ServletContext对象:servlet容器在启动时会加载web应用,并为每个web应用创建唯一的servlet context对象,可以把ServletContext看成是一个Web应用的服务器端组件的共享内存,在ServletContext中可以存放共享数据.ServletContext对象是真正的一个全局对象,凡是web容器中的Servlet都可以访问. servletConfig对象:用于封装servlet的配置信息.从一个servlet被实例化后,对任何客户端在任何时候访

ServletConfig和ServletContext对象

1由于一个WEB应用程序中的所有Servlet都共享同一个对应的ServletContext对象,所以ServletContext对象被称为application对象.是当前web应用的大管家,可以获取到web应用的各个信息 package servlet; import java.io.IOException; import java.io.InputStream; import java.util.Enumeration; import javax.servlet.ServletConfig

(转)ServletConfig与ServletContext对象详解

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