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

来源:https://www.cnblogs.com/gxq666/archive/2018/05/29/9103247.html
-Advertisement-
Play Games

一、什麼是Servlet Servlet 運行在服務端的Java小程式, 是sun公司提供一套規範(介面) 主要功能: 用來處理客戶端請求 響應給瀏覽器的動態資源 servlet的實質就是java代碼, 通過java的API動態的向客戶端輸出內容 以後寫的程式就不在是在本地執行了。 而是編譯成位元組碼 ...


 一、什麼是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類中靜態方法

        

        

        

 

        

 

 

 

        

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 一、什麼是代理模式 關於代理模式,我們聽到的見到的最多的可能就是靜態代理、動態代理之類的,當然還有大家都知道的Spring Aop,這裡我們先不談這些個代理,先說個簡單的例子。游戲代練應該都聽說過,許多人肯定也找過代練,曾經DNF、LOL、COC等等游戲的代練很多,當然現在各類游戲層出不窮,也都有各 ...
  • 1.模型管理 :web線上流程設計器、預覽流程xml、導出xml、部署流程 2.流程管理 :導入導出流程資源文件、查看流程圖、根據流程實例反射出流程模型、激活掛起 3.運行中流程:查看流程信息、當前任務節點、當前流程圖、作廢暫停流程、指派待辦人 4.歷史的流程:查看流程信息、流程用時、流程狀態、查看 ...
  • 簡介: 動態的給一個對象添加一些額外的職責,就增加功能來說,裝飾模式比生產子類更加靈活——《大話設計模式》; 結構圖: 優點: 缺點: 應用場景: 註意事項: 示例: 1.結構類的實現: 被裝飾抽象類和被裝飾具體類 裝飾抽象類和具體裝飾類 客戶端 執行結果 2.裝飾器模式之DOTA英雄學習技能 英雄 ...
  • 作業小結3 規格化設計的發展歷史 最早的程式設計都是採用機器語言來編寫的,直接使用二進位碼來表示機器能夠識別和執行的指令和數據。簡單來說,就是直接編寫0和1的序列來代表程式語言。例如:使用0000代表載入(LOAD),0001代表存儲(STORE)等。 面向機器的語言通常情況下被認為是一種“低級語言 ...
  • 課程簡介: 這是一套目前為止我覺得最適合小白學習的體系非常完整的Python爬蟲課程,使用的Python3.6的版本,用到anaconda來開發python程式,老師講解的很細緻,課程體系設置的也非常棒,完全是從淺入深一點點講解,從Python爬蟲環境的安裝開始,講解了最最基本的urllib包如何使 ...
  • 博客地址:http://www.cnblogs.com/yudanqu/ 一、遞歸 遞歸調用:一個函數,調用的自身,稱為遞歸調用 遞歸函數:一個可以調用自身的函數稱為遞歸函數 凡是迴圈能幹的事,遞歸都能幹 下麵我們通過兩段代碼簡單看一下遞歸和非遞歸的區別: 輸入一個大於等於1的數,求1到n的和! 下 ...
  • 需要的聯繫我,QQ:1844912514 第1周 開課介紹 python發展介紹 第一個python程式 變數 字元編碼與二進位 字元編碼的區別與介紹 用戶交互程式 if else流程判斷 while 迴圈 while 迴圈優化版本 for 迴圈及作業要求 第2周 本節雞湯 模塊初識 pyc是什麼 ...
  • Java開源生鮮電商平臺-伺服器部署設計與架構(源碼可下載) 補充說明:Java開源生鮮電商平臺-伺服器部署設計與架構,指的是通過伺服器正式上線整個項目,進行正式的運營。 回顧整個章節,我們涉及到以下幾個方面: 1. 買家端 2. 賣家端。 3. 銷售端 4. 配送端。 5.系統運營端。 6.公司網 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...