ServletContext简介

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ServletContext简介相关的知识,希望对你有一定的参考价值。

Web容器在启动时,会为每个Web应用程序都各自创建一个对应的ServletContext对象。这个Web应用程序中的所有Servlet,都共享同一个ServletContext,因此,Servlet间可以通过ServletContext来进行通讯。

  • 设置全局ServletContext的容器参数

在web.xml文件中,通过<context-param>来设置全局的servletContext参数:

    <!--全局servletContext的容器参数-->
    <context-param>
        <param-name>name</param-name>
        <param-value>orton</param-value>
    </context-param>
    <context-param>
        <param-name>mail</param-name>
        <param-value>[email protected]</param-value>
    </context-param>
  • 获取全局ServletContext的容器参数

使用方法:getInitParameter来获取初始化参数:

    @Override
    public void init(ServletConfig config) throws ServletException {
        ServletContext sc = config.getServletContext();
        //获取初始化参数
        String name = sc.getInitParameter("name");
        String mail  = sc.getInitParameter("mail");
        System.out.println("name="+name+",mail="+mail);
       
    }

启动tomcat服务器看到输出:
技术分享图片

  • 通过getAttribute、setAttribute来进行serlvet间数据共享

在servlet1中写入参数address:

    @Override
    public void init(ServletConfig config) throws ServletException {
        ServletContext sc = config.getServletContext();
        //获取初始化参数
        String name = sc.getInitParameter("name");
        String mail  = sc.getInitParameter("mail");
        System.out.println("name="+name+",mail="+mail);
        //设置全局共享的Servlet参数
        sc.setAttribute("Address","GD");
    }

在servlet2中获取参数address:


    @Override
    public void init(ServletConfig config) throws ServletException {
        ServletContext sc = config.getServletContext();
        //设置全局共享的Servlet参数
        String address = (String) sc.getAttribute("Address");
        System.out.println("on Servlet2,Address=" + address);

    }

在web.xml中配置servlet1先装入,servlet2后装入:

    <servlet>
        <servlet-name>configSerlet</servlet-name>
        <servlet-class>com.src.srv.configSvrlet</servlet-class>
        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>configSerlet</servlet-name>
        <url-pattern>/servlet1</url-pattern>
    </servlet-mapping>


    <servlet>
        <servlet-name>configSerlet2</servlet-name>
        <servlet-class>com.src.srv.configSvrlet</servlet-class>
        <load-on-startup>2</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>configSerlet2</servlet-name>
        <url-pattern>/servlet2</url-pattern>
    </servlet-mapping>

启动tomcat,可以看到servlet2获取到了servlet1设置的address属性:
技术分享图片

以上是关于ServletContext简介的主要内容,如果未能解决你的问题,请参考以下文章

ServletContext对象解析

JavaWeb ServletContext/application初试总结

JavaWeb项目启动过程与ServletContext

Tomcat启动后,从spring容器中获取Bean和ServletContext

ServletContext对象初识

Servlet(简介,请求参数,页面跳转,生命周期,创建,配置,ServletContext,线程)