ServletContext物件
1.Context是上下文的意思,就是環境的意思,相當於腔體。
2.ServletContext的意思是這個大腔體裡面有一系列的Servlet,就是web應用了。
3.web應用是由無數的servlet構成,service和dao都是servlet後續的元件,他們都執行在servlet的內部,只是分離出去的模組。本質上,一個web應用,只是一堆servlet。所以,servletContext就是一個web應用,是一個大腔體,裡面有很多個servlet存活。
===========================================================================
原出處:https://www.cnblogs.com/HigginCui/p/5970186.html
【簡介】
ServletContext即Servlet上下文物件,該物件表示當前的web應用環境資訊,一個Web應用只會建立一個ServletContext物件。
Web容器啟動的時候,它會為每個Web應用程式都建立一個對應的ServletContext物件,它代表當前的web應用。
[注意]
由於一個Web應用中的所有Servlet共享一個ServletContext物件,所以多個Servlet通過ServletContext物件實現資料共享,
ServletContext物件通常稱為Context域物件。
【ServletContext建立時機】
ServletContext物件是在TomCat伺服器載入完當前Web應用後建立出來的。
ServletContext物件是作為ServletConfig物件成員變數傳入Servlet中。
通過ServletConfig的getServletContext()方法就可以得到ServletContext物件。
看下ServletConfig中相關的ServletContext程式碼:
class ServletConfig{ //ServletConfig物件中維護了ServletContext物件的應用
ServletContext context;
getInitParameter();
getInitParameterNames();
public ServletContext getServletContext(){ //返回一個ServletContext物件
return contex;
}
}
在Servet中的init的方法例項化一個ServletConfig
@Override
public void init(ServletConfig config) throws ServletException {
super.init(config);
}
[ 注意 ]
this.ServletConfig.getServletContext():通過ServletConfig物件來獲取ServletContext物件。
ServletContext物件:啟動時建立
ServletConfig物件:呼叫init方法之前建立的,在ServletContext物件之前。
【在Servlet中得到ServletContext的兩種方式】
【ServletContext的5大作用】
1.獲取web的上下文路徑
String getContextPath();
2.獲取全域性的引數
String getInitParameter(String name);
Enumeration getInitParameterNames();
3.和域物件相關的
void setAttribute(String name,Onject object);
Object getAttribute(String name);
void removeAttribute(String name);
域物件(域物件就是在不同資源之前來共享資料,儲存資料,獲取資料)
ServletContext是我們學習的第一個域物件(Servlet共有三個域物件ServletContext、HttpServletRequest、HttpSession)
4. 請求轉發的
RequestDispatcher getRequestDispatcher(String path);
在Servlet跳轉頁面:
4.1請求重定向(你找我借錢,我沒有,你自己去找他借錢)
1.位址列會改變,變成重定向到的地址
2.可以跳轉到專案內的資源,也可以跳轉專案外的資源
3.瀏覽器向伺服器發出兩次請求,那麼不能使用請求來作為域物件來共享資料。
4.2請求轉發(你找我借錢,我沒有,我幫你去向他借錢)
1.位址列不會改變
2.只能跳轉到專案內的資源,不能跳轉專案外的資源。
3.瀏覽器向伺服器發出一次請求,那麼可以使用請求作為域物件共享資料。
5.讀取web專案的資原始檔
String getRealPath(String path);
InputStream getResourceAsStream(String path);
URL getResource(String path);
【利用ServletContext物件來收發資料(Servlet3.0新特性)】
利用ServletContext實現SendServlet和ReceiveServlet之間的資料共享。
【SendServlet.java 發資料】
package com.Higgin.context;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@WebServlet("/SendServlet")
public class SendServlet extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String data="Higgin";
this.getServletContext().setAttribute("data", data);
System.out.println("SendServlet傳送的資料為:"+data);
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
}
}
【ReceiveServlet.java 收資料】
package com.Higgin.context;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@WebServlet("/ReceiveServlet")
public class ReceiveServlet extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String data=(String) this.getServletContext().getAttribute("data");
System.out.println("ReceiveServlet接收到的資料:"+data);
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
}
}
[ 傳送和接收資料(使用不同的瀏覽器,應用場景:聊天室) ]
【通過ServletContext讀取資原始檔db.properties】
【工程截圖】
[ db.properties ]
url=jdbc:mysql://localhost:3306/test
username=root
password=123456
[ ServletDemo00.java ]
package com.Higgin.servlet;
import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;
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;
@WebServlet("/ServletDemo00")
public class ServletDemo00 extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
InputStream in=this.getServletContext().getResourceAsStream("/WEB-INF/classes/db.properties");
Properties props=new Properties();
props.load(in);
String url=props.getProperty("url");
String username=props.getProperty("username");
String password=props.getProperty("password");
System.out.println("url=="+url);
System.out.println("username=="+username);
System.out.println("password=="+password);
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
}
}
[ 執行結果 ]
相關文章
- ServletConfig與ServletContext物件詳解ServletContext物件
- 請問怎麼透過HttpServletRequest和HttpServletResponse 物件取得ServletContext物件HTTPServlet物件Context
- 請問怎麼透過HttpServletRequest或HttpServletResponse物件取得ServletContext物件HTTPServlet物件Context
- ServletContext 學習ServletContext
- ServletContext介紹ServletContext
- javax.servlet.ServletContext介面JavaServletContext
- ServletContext,ActionContext,ServletActionContextServletContext
- servlet ServletConfig ServletContextServletContext
- java.lang.NoClassDefFoundError:javax/servlet/ServletContextJavaErrorServletContext
- servletcontext與application的聯絡ServletContextAPP
- 原創:ServletContext應用介紹總結ServletContext
- HTTP&response響應&驗證碼&servletcontextHTTPServletContext
- The method getJspApplicationContext(ServletContext) is undefined for the type JsJSAPPContextServletUndefined
- java基礎學習:JavaWeb之ServletConfig與ServletContextJavaWebServletContext
- 在Struts2中ValueStack、ActionContext、ServletContext、request、session關係分析ContextServletSession
- Could not open ServletContext resource [/WEB-INF/applicationContext.xml]解決ServletContextWebAPPXML
- java.lang.NoSuchMethodError: javax.servlet.ServletContext.getContextPath()Ljava/lang/String;JavaErrorServletContext
- Servlet第二篇【Servlet呼叫圖、Servlet細節、ServletConfig、ServletContext】ServletContext
- Java_喬曉鬆_Servlet--ServletContext的總結以及應用例項JavaServletContext
- session物件、cookie物件和appliaction物件Session物件CookieAPP
- Javascript 物件 – 字串物件JavaScript物件字串
- 函式物件、物件、原型函式物件原型
- 物件導向,搞定物件物件
- 物件獲取原型物件物件原型
- Javascript 物件 – 數學物件JavaScript物件
- Javascript 物件 – 陣列物件JavaScript物件陣列
- jQuery物件和DOM物件jQuery物件
- 值物件與引用物件物件
- JavaScript 本地物件、內建物件和宿主物件JavaScript物件
- 【JavaEE】Servlet介面、ServletConfig介面、GenericServlet抽象類、ServletContext介面、HttpServlet類原始碼及方法JavaServlet抽象ContextHTTP原始碼
- Golang中多大的物件算是大物件,多小的物件算是小物件?Golang物件
- JavaScript課程——Day07(物件簡介、Math物件、時間物件、字串物件)JavaScript物件字串
- js,javascript陣列物件的父級物件 – 子集物件(陣列物件相減)JSJavaScript陣列物件
- JavaScript 複習之包裝物件,Boolean物件,Number物件JavaScript物件Boolean
- 偽物件、樁物件、模擬物件|單元測試物件
- JS筆記—— 物件 (原型物件)JS筆記物件原型
- 事務物件和命令物件物件
- 物件鎖:傳遞物件鎖物件