servletContext 对象的解释

news/2024/7/7 22:32:39

大家好,今天来分享一下servletContext 作用

关于 servletContext 对象, 他代表是整个web 项目,他可以和servlet 或者程序的容器进行通信

同时也可以管理web项目

当一个web项目当中有很多servlet, 那这些servlet之间需要通信
就要使用到servletContext 对象来负责

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在java文件夹下

package test02;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

public class FirstServlet extends HttpServlet {
    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
       // super.doPost(req, resp);
        System.out.println("你好");
    }

    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    //    super.doGet(req, resp);

    }
}

设置tomcat

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

会自动跳出这个页面

在这里插入图片描述

servletContext 对象

就是一个web容器(像tomcat)在启动的时候,每一个web应用都有一个servletContext 对象,负责管理整个web容器,它也表示当前的web应用

// this.getInitParameter() 初始化参数
//this.getServletConfig() servlet 配置
//this.getServletContext() servlet上下文

这是截图:(以及它具体的摆放位置)

在这里插入图片描述

这几个属性百度上都有

this.getServletContext()
是我们今天的关键

servletContext 对象主要的功能:

一. 数据共享(可以让你在一个servlet当中获取到另一个servlet当中的数据)

这句话可能不太好懂

可以看前面的博客

在这里也可以说一下,单个的servlet程序创建过程

  1. 在idea当中新建一个webapps模板的maven项目(这个不强求,只是为了方便)

  2. 导入相关依赖

  3. 写一个类,例如FirstServlet,让他继承HttpServlet 这个类

  4. 写对应的方法(dopost,doget 这两个)

  5. 在web.xml 文件中进行注册
    在这里插入图片描述

注意看它的位置

我们要在web.xml 里面去进行注册

这是在web.xml 里面写的东西

<?xml version="1.0" encoding="UTF-8"?>

<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
                      http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
         version="4.0"
         metadata-complete="true">
<!--    注册servlet-->
    <servlet>
        <servlet-name  >hello</servlet-name>
        <!--        可以随便写,就是一个别名-->
        
        <servlet-class>test02.FirstServlet</servlet-class>
<!--        这里一定要指向我们自己刚才写的类,写清楚它所在的具体路径-->
    </servlet>
    <servlet-mapping>
        <servlet-name>hello</servlet-name>
        <url-pattern>/hello</url-pattern>
        <!--    这是配置它的请求路径-->
    </servlet-mapping>



</web-app>

完成之后这个web.xml 的文件就不需要动它了

servlet的代码部分也完成了

接下来我们要配置tomcat服务器

idea配置tomcat服务器看我这个就可以了

接下来我们启动tomcat ,让tomcat把我们的servlet程序在浏览器上进行展示

在这里插入图片描述

就是这样

看效果
在这里插入图片描述

到这里,我们一个最简单的servlet 程序 就好了

这就是一个单个的servlet程序的创建过程

然而,在一个项目当中,可以有多个servlet程序(只需要重复上面的操作就可以了)

在这里有一个`注意点

就是一个web.xml 文件当中可以同时注册多个servlet程序

在一个项目当中也不会只有一个servlet程序

我们今天要说的这个servletContext 对象就是用来管理各个servlet程序

在这里插入图片描述

也可以全局(也就是架构的角度上来看),就是这个样子

再说的白一点,你想创建多少个servlet程序 ,就在web.xml 这个文件里面注册多少个就可以了

接下来,我们看一下

package test02;

import javax.servlet.Servlet;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

public class FirstServlet extends HttpServlet {
    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
       // super.doPost(req, resp);

       ServletContext context=this.getServletContext();    //上下文
        String username = "帅哥";    //这个赋值为中文
       context.setAttribute("user",username);    //将赋值放到相应的对象当中

      //这个我们写的一个 ServletContext实例
      //在这里做个演示

//我们在这个把context   对象放到这个类里面



//我们就相当于在这个类里写了数据,FirstServlet这个类是一个servlet程序

      
    
    }

    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//        super.doGet(req, resp);

    }
}
`

接下来再写一个类(它属于另外一个servlet程序)

在这里插入图片描述

这个类创建好了之后,啥也不用管,先让它继承HttpServlet 这个类

之后写dopost ,doget 这两个方法

package test02;

import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

public class SecondServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
     //   super.doGet(req, resp);

    }

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

在SecondServlet这个类里获取FirstServlet的context所设置的数据

package test02;

import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

public class SecondServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
       // super.doGet(req, resp);
        ServletContext context =this.getServletContext();
        String username ="帅哥";
        context.setAttribute("username",username);
        resp.setContentType("text/html");
        resp.setCharacterEncoding("utf-8");
        resp.getWriter().print("名字" +username);

    }

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

在web.xml文件当中对SecondServlet 进行注册

  <servlet>
        <servlet-name  >hello2</servlet-name>
        <servlet-class>test02.SecondServlet</servlet-class>
<!--        这个是有关于SecondServlet的注册-->

    </servlet>
    <servlet-mapping>
        <servlet-name>hello2</servlet-name>
        <url-pattern>/hello2</url-pattern>
    </servlet-mapping>

完整的web.xml的文件内容是这样的

<?xml version="1.0" encoding="UTF-8"?>

<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
                      http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
         version="4.0"
         metadata-complete="true">
<!--    注册servlet-->
    <servlet>
        <servlet-name  >hello</servlet-name>
        <servlet-class>test02.FirstServlet</servlet-class>

    </servlet>
    <servlet-mapping>
        <servlet-name>hello</servlet-name>
        <url-pattern>/02</url-pattern>
    </servlet-mapping>

    <servlet>
        <servlet-name  >hello2</servlet-name>
        <servlet-class>test02.SecondServlet</servlet-class>
<!--        这个是有关于SecondServlet的注册-->

    </servlet>
    <servlet-mapping>
        <servlet-name>hello2</servlet-name>
        <url-pattern>/hello2</url-pattern>
    </servlet-mapping>


</web-app>

之后启动Tomcat服务器
在这里插入图片描述

在这里插入图片描述

servletContext 对象赋予的数据是在FirstServlet类

然而,servletContext 对象的取值与访问工作被放在了SecondServlet类当中

*FirstServlet类这个类和SecondServlet  这个类属于两个不同的servlet程序*

(这一条是重点)

这个小案例就是证明,servletContext 对象具有数据共享的特征

好了,有关于servletContext 对象的解释就到这里了,谢谢大家


http://lihuaxi.xjx100.cn/news/326905.html

相关文章

【Opencv实战】高手勿入,Python使用Opencv+Canny实现边缘检测以及轮廓检测(详细步骤+源码分享)

前言 有温度 有深度 有广度 就等你来关注哦~ 所有文章完整的素材源码都在&#x1f447;&#x1f447; 粉丝白嫖源码福利&#xff0c;请移步至CSDN社区或文末公众hao即可免费。 在这次的案例实战中&#xff0c;我们将使用Python 3和OpenCV。我们将使用OpenCV&#xff0c;因为它是…

自动驾驶:2022 apollo day 观后感(二)

自动驾驶&#xff1a;2022 apollo day 观后感&#xff08;二&#xff09;TOPIC TWO&#xff1a;自动驾驶地图&#xff1a;Apollo的实践和思考&#xff08;黄际洲&#xff09;地图需求升级自动驾驶规划方向轻成本&#xff0c;重体验轻成本重体验安全&#xff1a;舒适度出行效率新…

JavaEE技术点:MySQL目录及基本命令介绍

1.MySQL目录介绍 (1)首先来看MySQL的安装目录&#xff0c;如图1-1所示&#xff1a; 图1-1 MySQL的安装目录 (2)图1-1中的bin目录中存放的是二进制的可执行文件&#xff0c;如图1-2所示&#xff1a; 图1-2 bin目录结构 (3)图1-2中的mysqld.exe是服务器程序&#xff0c;必须先…

Python学习工具TOP10

前言&#xff1a; 大家好&#xff0c;我是是Dream呀&#xff0c;在我们平时的开发和生活中&#xff0c;每天都在使用、寻找、贡献、创作各类开发者工具&#xff0c;包括开源服务、付费软件、API等。好的工具可以极大帮助我们提升效率&#xff0c;服务业务。作为一名资深的Pytho…

STM32读保护的解除和出现的原因,使用串口和ST-LINK Utility解除读保护

STM32读保护的解除和出现的原因&#xff0c;使用串口和ST-LINK Utility解除读保护STM32读保护读保护保护出现的现象出现的原因读保护解决方法1、重新下载CH340驱动2、FlyMcu串口下载软件接触读保护使用STM32 ST-LINK Utility软件解除读保护注意STM32读保护 读保护保护出现的现…

[附源码]计算机毕业设计基于Springboot游戏交易平台

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

小红书达人笔记的优势以及达人笔记形式有哪些

在众多不同类型产品营销推行途径和方法中间&#xff0c;小红书达人笔记推行成功脱颖而出&#xff0c;成为主流方法&#xff0c;并且得到各大企业品牌重视和认可。今天就来分享一下小红书达人笔记的优势&#xff0c;小红书达人笔记的分类是什么? 小红书达人笔记毫无疑问是一个具…

计算机毕业设计Java旅行社网站系统(源码+mysql数据库+系统+lw文档)

计算机毕业设计Java旅行社网站系统(源码mysql数据库系统lw文档&#xff09; 计算机毕业设计Java旅行社网站系统(源码mysql数据库系统lw文档&#xff09;本源码技术栈&#xff1a; 项目架构&#xff1a;B/S架构 开发语言&#xff1a;Java语言 开发软件&#xff1a;idea eclip…