ServletContext介绍及用法

1.1.  介绍

ServletContext官方叫servlet上下文。服务器会为每一个工程创建一个对象,这个对象就是ServletContext对象。这个对象全局唯一,而且工程内部的所有servlet都共享这个对象。所以叫全局应用程序共享对象


1.2.  作用

1.      是一个域对象

2.      可以读取全局配置参数

3.      可以搜索当前工程目录下面的资源文件

4.      可以获取当前工程名字(了解)

1.2.1.   servletContext是一个域对象

1.2.1.1.           域对象介绍

         域对象是服务器在内存上创建的存储空间,用于在不同动态资源(servlet)之间传递与共享数据。

1.2.1.2.           域对象方法

凡是域对象都有如下3个方法:

setAttribute(name,value);name是String类型,value是Object类型;

往域对象里面添加数据,添加时以key-value形式添加

getAttribute(name);

根据指定的key读取域对象里面的数据

removeAttribute(name);

根据指定的key从域对象里面删除数据

1.2.1.3.           域对象功能代码

域对象存储数据AddDataServlet代码

/**

      * doGet

      */

     publicvoid doGet(HttpServletRequest request, HttpServletResponse response)

              throws ServletException, IOException {

         //serlvetContext里面存数据

        

         //1.获取ServletContext对象

         //getServletContext()

         //2.往对象里面设置数据

         getServletContext().setAttribute("username", "admin");

        

         response.getOutputStream().write("用户名写入到servletContext成功".getBytes());

     }

 

获取域对象数据GetDataServlet代码

/**

      * doGet

      */

     publicvoid doGet(HttpServletRequest request, HttpServletResponse response)

              throws ServletException, IOException {

        

         //获取ServletContext里面的用户名数据

         Object valueObject = getServletContext().getAttribute("username");

         if(valueObject!=null){

              response.getOutputStream().write(("servletContext读取到的用户名数据:"+valueObject.toString()).getBytes());

         }

 

     }

servletContext存储数据特点,

全局共享,里面的数据所有动态资源都可以写入和获取

         服务器启动的时候创建,服务器关闭的时候销毁,因为这是全局应用程序对象,全局共享对象。

1.2.2.   可以读取全局配置参数

1.2.2.1.           servletContext读取全局参数核心方法

         getServletContext().getInitParameter(name);//根据指定的参数名获取参数值

    getServletContext().getInitParameterNames();//获取所有参数名称列表

1.2.2.2.           实现步骤:

1.      在web.xml中配置全局参数

  <!-- 全局配置参数,因为不属于任何一个servlet,但是所有的servlet都可以通过servletContext读取这个数据 -->

  <context-param>

         <param-name>param1</param-name>

         <param-value>value1</param-value>

  </context-param>

   <context-param>

         <param-name>param2</param-name>

         <param-value>value2</param-value>

  </context-param>

 

 

2.      在动态资源servlet里面使用servletcontext读取全局参数代码

public void doGet(HttpServletRequest request, HttpServletResponse response)

                    throws ServletException, IOException {

          

           //使用servletContext读取全局配置参数数据

           //核心方法

           /*getServletContext().getInitParameter(name);//根据指定的参数名获取参数值

           getServletContext().getInitParameterNames();//获取所有参数名称列表*/

          

           //打印所有参数

           //1.先获取所有全局配置参数名称

           Enumeration<String> enumeration =  getServletContext().getInitParameterNames();

           //2.遍历迭代器

           while(enumeration.hasMoreElements()){

                    //获取每个元素的参数名字

                    String parameName = enumeration.nextElement();

                    //根据参数名字获取参数值

                    String parameValue = getServletContext().getInitParameter(parameName);

                    //打印

                    System.out.println(parameName+"="+parameValue);

           }

         }

1.2.3.   可以搜索当前工程目录下面的资源文件

1.2.3.1.           核心方法

         getServletContext().getRealPath(path),根据相对路径获取服务器上资源的绝对路径

         getServletContext().getResourceAsStream(path),根据相对路径获取服务器上资源的输入字节流

1.2.4.   可以获取当前工程名字

1.2.4.1.           核心方法

         getServletContext().getContextPath();

         作用:获取当前工程名字

1.2.4.2.           代码

publicvoid doGet(HttpServletRequest request, HttpServletResponse response)

            throws ServletException, IOException {

       

        //获取工程名字,getServletContext().getContextPath()

        response.getOutputStream().write(("工程名字:"+getServletContext().getContextPath()).getBytes());

 

    }

  • 219
    点赞
  • 756
    收藏
    觉得还不错? 一键收藏
  • 14
    评论
ServletContext是Java 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应用程序。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值