欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

深入了解Java ServletContext

 更新時(shí)間:2020年08月03日 08:37:36   作者:一只胡說八道的猴子  
這篇文章主要介紹了Java ServletContext的相關(guān)資料,文中講解非常細(xì)致,代碼幫助大家更好的理解和學(xué)習(xí),感興趣的朋友可以了解下

什么是ServletContext?

根據(jù)字面意思即Servlet上下文

服務(wù)器會(huì)為每一個(gè)工程創(chuàng)建一個(gè)對象,這個(gè)對象就是ServletContext對象,這個(gè)對象是
全局唯一的,工程內(nèi)部的所有servlet都共享這個(gè)對象,所有應(yīng)用程序共享對象

下面用一段簡單的代碼來證明一下

import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
@WebServlet("/ServletContext2")
public class ServletContext2 extends HttpServlet{
  @Override
  protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    ServletContext servletContext = this.getServletContext();
    System.out.println("ServletContext2的地址:");
    System.out.println(servletContext);
  }

  @Override
  protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    this.doGet(req, resp);
  }
}
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
@WebServlet("/ServletContext")
public class ServletContext extends HttpServlet{
  @Override
  protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    this.doPost(req, resp);
  }

  @Override
  protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    javax.servlet.ServletContext servletContext = this.getServletContext();
    System.out.println("ServletContext2的地址:");
    System.out.println(servletContext);
    RequestDispatcher servletContext2 = req.getRequestDispatcher("ServletContext2");
    servletContext2.forward(req,resp);
  }
}

可以看到二者的地址一模一樣

ServletContext對象的生命周期

誕生:web部署到服務(wù)器上,啟動(dòng)服務(wù)器,此時(shí)上下文環(huán)境對象創(chuàng)建,只要tomcat服務(wù)器不關(guān)閉,上下文環(huán)境對象就一直
存在

銷毀:關(guān)閉服務(wù)器或者是從web服務(wù)器上卸載該程序的時(shí)候,該對象銷毀

怎么創(chuàng)建ServletContext對象?

方法一:

javax.servlet.ServletContext servletContext = this.getServletContext();

方法二:

javax.servlet.ServletContext servletContext1 = req.getServletContext();

方法三:

javax.servlet.ServletContext servletContext3 = this.getServletConfig().getServletContext();

ServletContext對象的作用與相關(guān)方法

1.是一個(gè)域?qū)ο?

什么是域:域其實(shí)就是一個(gè)map結(jié)構(gòu),及存入一個(gè)鍵值對,來存儲(chǔ)獲取數(shù)據(jù)
作用范圍:本工程內(nèi)部
域?qū)ο罂梢员槐竟こ虄?nèi)所有的servlet對象共享,因?yàn)橐粋€(gè)工程只有一個(gè)servletcontext對象

方法介紹:
存儲(chǔ)數(shù)據(jù): void setAttribute(String var1, Object var2);

移除數(shù)據(jù): void removeAttribute(String var1);

獲取數(shù)據(jù): Object getAttribute(String var1);
1.由于取出的是一個(gè)Object類型,需要強(qiáng)轉(zhuǎn)
2.如果指定的屬性名不存在,則返回null

2.可以獲取文件的真實(shí)路徑

真實(shí)路徑:即部署在服務(wù)器是的路徑
String getRealPath() 獲取文件的真實(shí)路徑

不同目錄下訪問資源的方式不同

//src下的資源訪問
    String realPath = servletContext.getRealPath("/WEB-INF/classes/a.text");
    System.out.println(realPath);
//WEB-INF下的資源訪問
    String realPath1 = servletContext.getRealPath("/WEB-INF/b.text");
    System.out.println(realPath1);
 //web目錄下的資源訪問
    String realPath2 = servletContext.getRealPath("/c.text");
    System.out.println(realPath2);

代碼

import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
@WebServlet("/ServletContext")
public class ServletContext extends HttpServlet{
  @Override
  protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    this.doPost(req, resp);
  }

  @Override
  protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    javax.servlet.ServletContext servletContext = this.getServletContext();
    //src下的資源訪問
    String realPath = servletContext.getRealPath("/WEB-INF/classes/a.text");
    System.out.println(realPath);
    //WEB-INF下的資源訪問
    String realPath1 = servletContext.getRealPath("/WEB-INF/b.text");
    System.out.println(realPath1);
    //web目錄下的資源訪問
    String realPath2 = servletContext.getRealPath("/c.text");
    System.out.println(realPath2);
  }
}

結(jié)果

3.獲得MIME類型

s什么是MIME類型,是在互聯(lián)網(wǎng)通信過程中定義等等一種文件數(shù)據(jù)類型
格式:大類型/小類型 image/jpeg
獲?。?String getMimeType(String file)

代碼如下

import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
@WebServlet("/ServletContext")
public class ServletContext extends HttpServlet{
  @Override
  protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    this.doPost(req, resp);
  }

  @Override
  protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    javax.servlet.ServletContext servletContext = this.getServletContext();
    String filename="a.jpg";
    String mimeType = servletContext.getMimeType(filename);
    System.out.println(mimeType);
  }
}

結(jié)果

以上就是ServletContext對象的一些基礎(chǔ)知識,如有錯(cuò)誤還請各位批評指正,喜歡我的文章可以點(diǎn)贊呀,也可以關(guān)注我,我會(huì)經(jīng)常跟新文章

以上就是深入了解Java ServletContext的詳細(xì)內(nèi)容,更多關(guān)于Java ServletContext的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • java——Byte類/包裝類的使用說明

    java——Byte類/包裝類的使用說明

    這篇文章主要介紹了java——Byte類/包裝類的使用說明,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-02-02
  • 基于python locust庫實(shí)現(xiàn)性能測試

    基于python locust庫實(shí)現(xiàn)性能測試

    這篇文章主要介紹了基于python locust庫實(shí)現(xiàn)性能測試,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-05-05
  • spring @Profiles和@PropertySource實(shí)現(xiàn)根據(jù)環(huán)境切換配置文件

    spring @Profiles和@PropertySource實(shí)現(xiàn)根據(jù)環(huán)境切換配置文件

    這篇文章主要介紹了spring @Profiles和@PropertySource根據(jù)環(huán)境切換配置文件,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-11-11
  • Java8中AbstractExecutorService與FutureTask源碼詳解

    Java8中AbstractExecutorService與FutureTask源碼詳解

    這篇文章主要給大家介紹了關(guān)于Java8中AbstractExecutorService與FutureTask的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2022-01-01
  • 深入理解Java SpringCloud Ribbon 負(fù)載均衡

    深入理解Java SpringCloud Ribbon 負(fù)載均衡

    Ribbon是一個(gè)客戶端負(fù)載均衡器,它提供了對HTTP和TCP客戶端的行為的大量控制。這篇文章主要介紹了SpringCloud Ribbon 負(fù)載均衡的實(shí)現(xiàn),感興趣的小伙伴們可以參考一下
    2021-09-09
  • 完美解決java double數(shù)相加和相減的方案

    完美解決java double數(shù)相加和相減的方案

    這篇文章主要介紹了完美解決java double數(shù)相加和相減的方案,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-01-01
  • SpringBoot多controller添加URL前綴的實(shí)現(xiàn)方法

    SpringBoot多controller添加URL前綴的實(shí)現(xiàn)方法

    這篇文章主要介紹了SpringBoot多controller添加URL前綴的方法,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-02-02
  • Java中的LinkedHashSet集合解讀

    Java中的LinkedHashSet集合解讀

    這篇文章主要介紹了Java中的LinkedHashSet集合解讀,LInkedHashSet這個(gè)容器不知道大家在平時(shí)的工作用的多嗎,反正我基本上沒有用過,所以,本文主要對于它的特點(diǎn)、使用場景、實(shí)現(xiàn)原理,做一個(gè)講解,希望對大家平時(shí)的工作有所幫助,需要的朋友可以參考下
    2023-09-09
  • 如何通過java將doc文件轉(zhuǎn)換為docx文件詳解

    如何通過java將doc文件轉(zhuǎn)換為docx文件詳解

    在數(shù)字化時(shí)代文檔處理成為了我們?nèi)粘9ぷ骱蛯W(xué)習(xí)中不可或缺的一部分,其中doc和docx作為兩種常見的文檔格式,各自具有不同的特點(diǎn)和優(yōu)勢,這篇文章主要給大家介紹了關(guān)于如何通過java將doc文件轉(zhuǎn)換為docx文件的相關(guān)資料,需要的朋友可以參考下
    2024-07-07
  • java簡單實(shí)現(xiàn)計(jì)算器

    java簡單實(shí)現(xiàn)計(jì)算器

    這篇文章主要為大家詳細(xì)介紹了java簡單實(shí)現(xiàn)計(jì)算器,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-12-12

最新評論