servletContext 对象的解释

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

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

同时也可以管理web项目

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

servletContext 对象的解释_第1张图片

servletContext 对象的解释_第2张图片

servletContext 对象的解释_第3张图片

servletContext 对象的解释_第4张图片

servletContext 对象的解释_第5张图片

servletContext 对象的解释_第6张图片

servletContext 对象的解释_第7张图片

servletContext 对象的解释_第8张图片

在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 对象的解释_第9张图片

servletContext 对象的解释_第10张图片

servletContext 对象的解释_第11张图片

servletContext 对象的解释_第12张图片

会自动跳出这个页面

servletContext 对象的解释_第13张图片

servletContext 对象

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

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

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

servletContext 对象的解释_第14张图片

这几个属性百度上都有

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

servletContext 对象主要的功能:

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

这句话可能不太好懂

可以看前面的博客

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

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

  2. 导入相关依赖

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

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

  5. 在web.xml 文件中进行注册
    servletContext 对象的解释_第15张图片

注意看它的位置

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

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



<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-name  >helloservlet-name>
        
        
        <servlet-class>test02.FirstServletservlet-class>

    servlet>
    <servlet-mapping>
        <servlet-name>helloservlet-name>
        <url-pattern>/hellourl-pattern>
        
    servlet-mapping>



web-app>

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

servlet的代码部分也完成了

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

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

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

servletContext 对象的解释_第16张图片

就是这样

看效果
servletContext 对象的解释_第17张图片

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

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

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

在这里有一个`注意点

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

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

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

servletContext 对象的解释_第18张图片

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

再说的白一点,你想创建多少个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程序)

servletContext 对象的解释_第19张图片

这个类创建好了之后,啥也不用管,先让它继承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  >hello2servlet-name>
        <servlet-class>test02.SecondServletservlet-class>


    servlet>
    <servlet-mapping>
        <servlet-name>hello2servlet-name>
        <url-pattern>/hello2url-pattern>
    servlet-mapping>

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



<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-name  >helloservlet-name>
        <servlet-class>test02.FirstServletservlet-class>

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

    <servlet>
        <servlet-name  >hello2servlet-name>
        <servlet-class>test02.SecondServletservlet-class>


    servlet>
    <servlet-mapping>
        <servlet-name>hello2servlet-name>
        <url-pattern>/hello2url-pattern>
    servlet-mapping>


web-app>

之后启动Tomcat服务器
servletContext 对象的解释_第20张图片

servletContext 对象的解释_第21张图片

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

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

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

(这一条是重点)

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

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

你可能感兴趣的:(javaweb,系列笔记+源码,servlet,java,后端)