7 談一談ServletContext

1 概述

先了解一下ServletContext是什麼?
ServletContext 是Tomcat 創建的一個容器,指代了一個Web項目;
既然它能代表一個項目,一個項目包含多個Servlet,那麼是不是對於一個項目下的不同Servlet是不是用的同一個容器ServletContext;
既然可以共用,那麼共享數據是不是可以用它了。
在這裏插入圖片描述

2 ServletContext的使用

思路:

  1. 一個類繼承HttpServlet,獲得ServletContext對象,賦值
  2. 一個類繼承HttpServlet,獲得ServletContext對象,獲取上面賦的值
  3. 打印到控制檯
    注意點:運行時候先運行賦值的Servlet,再運行取值的Servlet,可以試試反過來什麼情況

2.1 獲取ServletContext對象

ServletContext servletContext = this.getServletContext();

2.2 爲ServletContext添加屬性值(上下文對象以Key-Value形式存儲的)

String name = "weiduo";
servletContext.setAttribute("name",name);

2.3 獲取ServletContext屬性值

ServletContext servletContext = this.getServletContext();
        String name = (String) servletContext.getAttribute("name");
        System.out.println(name);

3 參考代碼Demo

package com.duowei.servlet;

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 SetContext extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        ServletContext servletContext = this.getServletContext();
        String name = "weiduo";
        servletContext.setAttribute("name",name);
    }

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

package com.duowei.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 GetContext extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        ServletContext servletContext = this.getServletContext();
        String name = (String) servletContext.getAttribute("name");
        System.out.println(name);
    }

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

<?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">
  <servlet>
    <servlet-name>setContext</servlet-name>
    <servlet-class>com.duowei.servlet.SetContext</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>setContext</servlet-name>
    <url-pattern>/set</url-pattern>
  </servlet-mapping>
  
  <servlet>
    <servlet-name>getContext</servlet-name>
    <servlet-class>com.duowei.servlet.GetContext</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>getContext</servlet-name>
    <url-pattern>/get</url-pattern>
  </servlet-mapping>
  
</web-app >
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章