<7>ServletContext 类

本文介绍了ServletContext接口在Web应用中的核心作用,包括配置参数读取、工程路径获取、文件路径定位以及作为域对象的数据存储。通过示例展示了如何在Servlet中操作这些功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.ServletContext 类简介

  • 1、ServletContext 是一个接口,它表示 Servlet 上下文对象
  • 2、一个 web 工程,只有一个 ServletContext 对象实例。
  • 3、ServletContext 对象是一个域对象。
  • 4、ServletContext 是在 web 工程部署启动的时候创建。在 web 工程停止的时候销毁。

注:
域对象,是可以像 Map 一样存取数据的对象,叫域对象。
这里的域指的是存取数据的操作范围,整个 web 工程。
在这里插入图片描述

2.ServletContext 类的四个作用

  • 1、获取 web.xml 中配置的上下文参数 context-param
  • 2、获取当前的工程路径,格式: /工程路径
  • 3、获取工程部署后在服务器硬盘上的绝对路径
  • 4、像 Map 一样存取数据

2.1 获取XML配置的上下文参数、文件工程路径、绝对路径

例如Servlet在XML中的配置为:

<!--context-param 是上下文参数(它属于整个 web 工程)-->
    <context-param>
        <param-name>username</param-name> 
        <param-value>abc</param-value>
    </context-param>

Servlet 中的代码:

public class HelloServlet03 extends HttpServlet {

    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        ServletContext context = getServletConfig().getServletContext();
        // 1、获取 web.xml 中配置的上下文参数 context-param
        String username = context.getInitParameter("username");
        System.out.println("context-param 参数 username 的值是:" + username);

        // 2、获取当前的工程路径,格式: /工程路径
        System.out.println( "当前工程路径:" + context.getContextPath() );

        // 3、获取工程部署后在服务器硬盘上的绝对路径
        System.out.println("工程部署的路径是:" + context.getRealPath("/"));

    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

    }
}

在这里插入图片描述

2.2 像 Map 一样存取数据

Servlet 中的代码:

public class HelloServlet03 extends HttpServlet {

    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        ServletContext context = getServletConfig().getServletContext();
        // 1、获取 web.xml 中配置的上下文参数 context-param
        String username = context.getInitParameter("username");
        System.out.println("更改前的username:" + username);
		//2、设置 web.xml 中配置的上下文参数 context-param
        context.setAttribute("username", "edf");
        System.out.println("更改后的username:" + context.getAttribute("username"));

    }
    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

    }
}

实验结果:
在这里插入图片描述

<?xml version="1.0" encoding="utf-8"?> <configuration> <connectionStrings> <add name="MySqlConnString" connectionString="Database=falink300;Data Source=localhost;User ID=root;Password=8888" /> <add name="MyDBType" connectionString="mysql" /> <add name="MyXmlPathString" connectionString="D:\config\File\" /> </connectionStrings> <appSettings> <add key="version" value="4.4.2"></add> <add key="IsLaunchComServer" value="False" /> <add key="FAServiceName" value="FAServer" /> <add key="IsWindowsService" value="False" /> <add key="IsLaunchRemotingServer" value="True" /> <add key="FAConfigurationURL" value="" /> <add key="ConsoleRemotingURL" value="" /> <add key="RecipeApproveLevel" value="1" /> <add key="ctcserver" value="A"></add> <add key="faserver" value="A"></add> <add key="bridgeport" value="9002"></add> <add key="bridgeserver" value="bridgeserver"></add> <add key="RecipeApproveLevel" value="2"></add> <add key="bindTo" value="127.0.0.1"></add> <add key="pjobType" value="default"></add> <add key="Fix2971" value="False"></add> <add key="SubstrateProcessStateOffset" value="1"></add> <add key="commandtype" value="1"></add> <add key="CheckDeviceID" value="False"></add> <add key="ConnectWithoutS1F13" value="False"></add> <add key="EventFireToCTC" value="False"></add> <add key="SpoolMsg" value="6:1,11;"></add> <add key="MaxSpooledCount" value="50"></add> <add key="Heartbeat" value="LinkTest"></add> <add key="EstablishByHeartbeat" value="False"></add> <add key="DownloadRecipeFormat" value="string"></add> <!--<add key="seteventidoffset" value="400000000"></add>--> <!--Chinese: utf-8; English: us-ascii--> <add key="ChineseEncoding" value="us-ascii"></add> <add key="ThreadPoolMinCount" value="30"></add> <add key="S1F3DelayTime" value="1000"></add> <add key="nicid" value="1"></add> <add key="00000000-0000-0000-0000-000000000001" value="3"></add> <add key="00000000-0000-0000-0000-000000000002" value="3"></add> </appSettings> <startup> <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5.1" /> </startup> </configuration>解释这个配置文件,每一行的作用
最新发布
07-25
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值