ServletContext类简介

ServletContext类

什么是ServletContext?

1、ServletContext是一个接口,表示Servlet上下文对象
2、一个web工程只能有一个ServletContext对象实例
3、ServletContext对象是一个域对象

那么,什么是域对象呢?
答曰:可以像Map一样存取数据的对象,就叫做域对象。其中,域指的是存取数据的操作范围。

对象
Mapput()get()remove()
域对象setAttribute()getAttribute()removeAttribute()

有啥用,怎么用

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

好了,实例来了:

前三个作用实例整合

首先,新建一个Java类继承HttpServlet
在这里插入图片描述
然后,在web.xml设置其为一个Servlet模块,并给其添加<context-param>标签。

    <!--上下文参数,属于整个web工程(一般写在所有的Servlet前面,比较好看)-->
    <context-param>
        <param-name>skill</param-name>
        <param-value>anything</param-value>
    </context-param>

Servlet的设置其实应该都会了,但还是写一下:

    <servlet>
        <servlet-name>MyServletContexy</servlet-name>
        <servlet-class>edu.MyServletContext</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>MyServletContexy</servlet-name>
        <url-pattern>/servletContext</url-pattern>
    </servlet-mapping>

该有的都有了,那么怎么获取呢?不急,接着往下看,在刚才新建的Java类中这么写:

    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        /*获取web.xml中配置的上下文参数context-param*/
        ServletContext servletContext = getServletContext();
        String skill = servletContext.getInitParameter("skill");
        System.out.println(skill);
    }

然后修改新建一个html文件:
在这里插入图片描述

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<h1>MyServletContext响应界面</h1>
<form action="http://localhost:8080/servletDemo/servletContext" method="get">
    <button>提交GET请求</button>
</form>
<br>
<form action="http://localhost:8080/servletDemo/servletContext" method="post">
    <button>提交POST请求</button>
</form>
</body>
</html>

进入后,点击提交GET请求按钮,控制台输出信息:
在这里插入图片描述
类似的,使用方法getContextPath可以获取当前的工程路径,使用getRealPath("/")可以获取部署在硬盘上的绝对路径
在这里插入图片描述
在这里插入图片描述

第四个作用实例:像Map一样存取数据

看一下这个应该就足够懂了。
说个知识点就是:setAttribute后可以不断用getAttribute获取数据,直到整个工程被销毁。其实这个东西有点像全局变量就是了,就是等整个项目都被关了,全局变量才会被释放内存嘛,就是这个意思。
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值