1. 程式人生 > >05-Servlet與內部加載機制(part1)

05-Servlet與內部加載機制(part1)

str servle main web工程 包名 class 類加載器 成員 oca

一、什麽是Servlet

Servlet 運行在服務端的Java小程序,

是sun公司提供一套規範(接口)

主要功能:

用來處理客戶端請求

響應給瀏覽器的動態資源

servlet的實質就是java代碼,

通過java的API動態的向客戶端輸出內容

以後寫的程序就不在是在本地執行了。

而是編譯成字節碼

放到服務器上來去執行。

編寫程序時, 不需要有main函數了。

因為寫完後

就把編寫的程序編譯成字節碼,

放到服務器上面

當前發送就一個請求的時候

服務器就會按照一定規則調用編寫的代碼

二、Servlet快速入門

1.創建一個web工程名為:MyServlet

2.在JavaResource中src下

創建一個包名稱為com.myxq.servlet

3.在創建的servlet包當中

創建一個class文件起名為FirstServlet

4.進入該class實現一個Servlet接口,

實現它未實現的方法

重點看service方法

在該方法當中寫入一句話進行輸出

技術分享圖片

5.在web.xml當中進行配置

技術分享圖片

6.啟動服務器訪問:

localhost:8080/MyServlet/firstServlet

就會自動執行創建的servlet中service方法

三、servlet內部機制

想要弄清楚這個問題

就必須得要先了解什麽反射

四、類的加載時機

當程序要使用某個類時

如果該類還未被加載到內存中

系統會通過

加載,連接,初始化

三步來實現對這個類進行初始化

加載

就是指將class文件讀入內存

並為之創建一個Class對象。

任何類被使用時

系統都會建立一個Class對象。

連接

驗證 是否有正確的內部結構

並和其他類協調一致

準備 負責為類的靜態成員分配內存,

並設置默認初始化值

初始化

初始化成員變量等等

類的加載時機

創建類的實例

訪問類的靜態變量,或者為靜態變量賦值

調用類的靜態方法

初始化某個類的子類

使用反射方式

來強制創建某個類或接口

對應的java.lang.Class對象


五、類加載器

什麽是類加載器classLoader

  負責將.class文件加載到內存中,

並為之生成對應的Class對象。

  雖然我們不需要關心類加載機制,

但是了解這個機制

我們就能更好的理解程序的運行。

類加載器可分為:

  根類加載器

  也被稱為引導類加載器

負責Java核心類的加載

  比如System,String等。

在JDK中JRE的lib目錄下rt.jar文件中

  擴展類加載器

  負責JRE的擴展目錄中jar包的加載。

  在JDK中JRE的lib目錄下ext目錄

  系統類加載器

  負責在JVM啟動時

加載來自java命令的class文件

  以及classpath環境變量

所指定的jar包和類路徑

六、什麽是反射

創建一個對象的三個階段

  1.源文件階段 .java的文件

  2.字節碼階段 .class

  3.創建對象階段 new 對象

內省:

  在運行時能夠獲取

JavaBean當中的

屬性名稱和get與set

反射:

  JAVA反射機制是在運行狀態中

對於任意一個類

都能夠知道這個類

所有屬性和方法;

  對於任意一個對象

都能夠調用它的

任意一個方法和屬性;

  這種動態獲取的信息

以及動態調用對象的方法的功能

稱為java語言的反射機制。

  想要使用反射,

就必須得要獲取字節碼文件

獲取字節碼:

1.Object類的getClass()方法

2.靜態屬性class

3.Class類中靜態方法

技術分享圖片

05-Servlet與內部加載機制(part1)