1. 程式人生 > >Java Servlet 技術簡介

Java Servlet 技術簡介

開始之前

關於本教程

在您最喜歡的 Web 瀏覽器中,您所閱讀的頁面是如何出現的呢?當登入到您最喜歡的 Web 站點時,該 Web 站點如何知道登入的使用者是您?而 Web 零售商又如何接受您的線上訂購呢?這些功能都是可能的,因為在這些場景的背後,運行於伺服器上的程式碼將在 Web 會話中與您進行互動,通過該過程訪問已儲存的資訊,並經常在一個或多個 Web 頁面中展示動態資訊。在 Java 語言世界中,這些功能的核心部分是由 servlet 提供的。本教程的目的就是向您介紹 servlet。文中將描述 servlet 是什麼,它們是如何工作的,您可以如何使用它們來建立您能夠想像到的任意複雜度的 Web 應用程式,以及作為一名專業程式設計人員,您如何才能最有效地使用 servlet。

本教程的內容是為不熟悉,或者只是略微熟悉 servlet 的 Java 程式設計人員準備的。本教程假定您對於下載和安裝軟體以及 Java 語言(建立類、匯入類等)有一般性的瞭解,但並不假定您已經瞭解 servlet。本教程包括一個說明 servlet 基本概念的簡單例子,以及一個涉及更多內容的例子,它說明如何在小型的合同管理程式中更復雜地使用 servlet。

本教程的適用物件

如果您已編寫 Web 應用程式多年,那麼本教程可能不適合您。如果您不知道 servlet 是什麼,或者只是略懂一二,那麼請您繼續讀下去。雖然本教程所包含的只是 servlet 的部分內容,但它是一篇很好的入門介紹。

不過,您應該非常瞭解 Java 程式設計的基礎知識。但是,如果您還沒有完全達到這些要求,那麼請從閱讀我撰寫的 Java 程式設計簡介 教程開始。

工具和程式碼

為了執行本教程中的例子或示例程式碼,至少需要在機器上安裝 JDK 1.4.2 或更高版本,以及 Eclipse IDE。我們將介紹安裝用於 Eclipse 的 Tomcat 外掛的整個過程,這將允許您很容易地開發 servlet 應用程式。

本教程中的所有程式碼示例都在 Windows XP 平臺上用 J2SE 1.4.2 進行了測試,但必須使用 J2SE 1.4.1 或者甚至是 5.0 版本,並且不對它們進行修改,它們才會工作。

要安裝 Tomcat,則需要進入 Jakarta 的 Web 站點(請參閱 參考資料),並下載二進位制版本的 Tomcat 5.0.28(編寫本教程時,這是匹配 J2SE 1.4.2 的最新版本)。隨 Windows 安裝程式一起提供的包會使該平臺上的安裝輕而易舉地完成。按照 readme 檔案中的說明進行安裝,您將順利完成這項操作。

為了安裝用於 Eclipse 的 Tomcat 外掛,需要進入 Sysdeo 的 Web 站點(請參閱 參考資料 ),並下載該外掛的 zip 檔案(編寫本教程時,該檔案是 tomcatPluginV3.zip)。然後只要將之解壓至 plugins 目錄,並按照下載頁面底部的說明安裝該外掛即可。為了確保這個外掛正常工作,請閱讀極為簡單的 HelloWorld servlet 設定“教程”,Sysdeo 頁面底部有其連結(至於直接連結,請參閱 參考資料)。

一旦安裝了 Tomcat 及其外掛,就可以準備開始本教程了。

servlet 簡介

servlet 的作用

當使用互動式 Web 站點時,您所看到的所有內容都是在瀏覽器中顯示的。在這些場景背後,有一個 Web 伺服器接收會話 中來自於您的請求,可能要切換到其他程式碼(可能位於其他伺服器上)來處理該請求和訪問資料,並生成在瀏覽器中顯示的結果。

servlet 就是用於該過程的網守(gatekeeper)。它駐留在 Web 伺服器上,處理新來的請求和輸出的響應。它與表示無關,實際上也不它應該與表示有關。您可以使用 servlet 編寫一個,將內容新增到 Web 頁面中,但那通常也不是一個好辦法,因為它有鼓勵表示與業務邏輯的混合的傾向。

servlet 的替代品

servlet 不是服務於 Web 頁面的惟一方式。滿足該目的的最早技術之一是公共閘道器介面(CGI),但那樣就要為每個請求派生不同的程序,因而會影響效率。還有專用伺服器擴充套件,如 Netscape Server API(NSAPI),但那些都是完全專用的。在 Microsoft 的世界裡,有活動伺服器頁面(ASP)標準。servlet 為所有這些提供了一個替代品,並提供了一些好處:

  • 它們與 Java 語言一樣是與平臺無關的。
  • 它們允許您完全訪問整個 Java 語言 API,包括資料訪問庫(如 JDBC)。
  • 大多數情況下,它們內在地比 CGI 更高效,因為 servlet 為請求派生新的執行緒,而非不同的程序。
  • 對於 servelet 有一個廣泛的行業支援,包括用於最流行的 Web 和應用程式伺服器的容器

servlet 是對專業程式設計人員工具箱的強大補充。

但什麼是 servlet?

作為一名專業程式設計人員,您碰到的大多數 Java servlet 都是為響應 Web 應用程式上下文中的 HTTP 請求而設計的。因此,javax.servlet 和javax.servlet.http 包中特定於 HTTP 的類是您應該關心的。

在建立一個 Java servlet 時,一般需要子類 HttpServlet。該類中的方法允許您訪問請求和響應包裝器(wrapper),您可以用這個包裝器來處理請求和建立響應。

當然,HTTP 協議不是特定於 Java 的。它只是一個規範,定義服務請求和響應的大致式樣。Java servlet 類將那些低層的結構包裝在 Java 類中,這些類所包含的便利方法使其在 Java 語言環境中更易於處理。正如您正使用的特定 servlet 容器的配置檔案中所定義的,當用戶通過 URL 發出一個請求時,這些 Java servlet 類就將之轉換成一個 HttpServletRequest,併發送給 URL 所指向的目標。當伺服器端完成其工作時,Java 執行時環境(Java Runtime Environment)就將結果包裝在一個 HttpServletResponse 中,然後將原 HTTP 響應送回給發出該請求的客戶機。在與 Web 應用程式進行互動時,通常會發出多個請求並獲得多個響應。所有這些都是在一個會話語境中,Java 語言將之包裝在一個HttpSession 物件中。在處理響應時,您可以訪問該物件,並在建立響應時向其新增事件。它提供了一些跨請求的語境。

容器(如 Tomcat)將為 servlet 管理執行時環境。您可以配置該容器,定製 J2EE 伺服器的工作方式,而且您必須 配置它,以便將 servlet 暴露給外部世界。正如我們將看到的,通過該容器中的各種配置檔案,您在 URL(由使用者在瀏覽器中輸入)與伺服器端元件之間搭建了一座橋樑,這些元件將處理您需要該 URL 轉換的請求。在執行應用程式時,該容器將載入並初始化 servlet,管理其生命週期

當我們說 servlet 具有生命週期時,只是指在呼叫 servlet 時,事情是以一種可預見的方式發生的。換言之,在任何 servlet 上建立的方法總是按相同的次序被呼叫的。下面是一個典型場景:

  • 使用者在瀏覽器中輸入一個 URL。Web 伺服器配置檔案確定該 URL 是否指向一個由運行於伺服器上的 servlet 容器所管理的 servlet。
  • 如果還沒有建立該 servlet 的一個例項(一個應用程式只有一個 servlet 例項),那麼該容器就載入該類,並將之例項化。
  • 該容器呼叫 servlet 上的 init()
  • 該容器呼叫 servlet 上的 service(),並在包裝的 HttpServletRequest 和 HttpServletResponse 中進行傳遞。
  • 該 servlet 通常訪問請求中的元素,代表其他伺服器端類來執行所請求的服務並訪問諸如資料庫之類的資源,然後使用該資訊填充響應。
  • 如果有必要,在 servlet 的有用生命結束時,該容器會呼叫 servlet 上的 destroy() 來清除它。

如何“執行”servlet

“執行”servlet 就像執行 Java 程式一樣。一旦配置了容器,使容器瞭解 servlet,並知道某些 URL 會致使容器呼叫該 servlet,該容器就將按照預定的次序呼叫生命週期方法。因此,執行 servlet 主要是指正確配置它,然後將瀏覽器指向正確的 URL。當然,servlet 中的程式碼正是發現有趣的業務邏輯的地方。您不必擔心低層事件的進展,除非發生某種錯誤。

不幸的是,經常會發生 一些令人沮喪的錯誤,尤其是在設定 servlet 時。致使 servlet 應用程式令人頭痛的最大原因就是配置檔案。您無法有效地除錯它們。您只能通過試錯法弄清楚這些錯誤,比如盡力破譯可能會或不會在瀏覽器中看到的錯誤訊息。

一個簡單的 servlet

這個簡單的 servlet 要完成的任務

第一個 servlet 將完成極少量的工作,但是它將暴露編寫 servlet 的所有基本要求。它將在瀏覽器視窗中輸出一些簡單的無格式文字:

Hello, World!

在建立該 servlet 時,我們將可以證實 Tomcat 應起的作用,並證實我們可以按照計劃使用 Eclipse 建立 Web 專案。我們還將遍歷在 Tomcat servlet 容器中配置 Web 應用程式的整個過程,如果您碰巧在 XML 檔案中犯了一個小錯誤,那麼您可能會對這個過程感興趣。不要擔心:至少在本教程中,Tomcat 會一直髮揮起作用。

在這第一個例子中,我們會將輸出直接從 servlet 寫入瀏覽器中。在本教程中,這將是我們最後一次使用該方法。

設定 Eclipse

我們需要執行少量工作,確保可以在 Eclipse 中建立並管理 Tomcat 專案。

如果已經安裝了該外掛(僅僅通過將 Sysdeo zip 檔案解壓至 eclipse/plugins 目錄),那麼您應該可以在工具欄上獲得一些附加的選單項和工具。如圖 1 中所示。

圖 1. Tomcat 外掛功能

Tomcat 外掛功能

工具欄按鈕允許您啟動、停止和重啟 Tomcat,當需要執行 servlet 時,必須進行這些工作。

為了允許我們建立 Tomcat 專案,這些專案具有合適的佈局,有助於 Tomcat 的部署,我們必須告訴 Eclipse 一些事情。如果單擊Window>Preferences,那麼您就將看到標準的 Eclipse 偏好設定對話方塊,其列表底部有一個名為 Tomcat 的新類別。單擊它將向您展示 Tomcat 偏好設定的主頁(參見圖 2)。

圖 2. Tomcat 的偏好設定

Tomcat 引數

選擇 Version 5.x,並指定 Tomcat home 的位置。(我的系統上,該位置是 C:\Program Files\Apache Software Foundation\Tomcat 5.0,但您的可能會不同)。選擇 Context files 為內容宣告模式。然後,單擊 JVM Settings 對子類別進行偏好設定,並確保在該頁頂部的下拉選單中選擇一個有效的 JRE。您可以使用預設的 JRE,也可以指向您的 JDK,並在 Java>Installed JREs 偏好設定頁面中告訴 Eclipse 這個 JDK。

完成這些操作後,請單擊 OK。現在,我們準備建立 Tomcat 專案。

建立 Tomcat 專案

Tomcat 外掛使 Web 開發人員更易於使用 Tomcat。如果單擊 File>New>Project,並展開對話方塊(參見圖 3)中的 Java 嚮導類別,那麼您會在該對話方塊中看到一類新的專案嚮導:Tomcat 專案。

圖 3. 新建 Tomcat 專案

新建 Tomcat 專案

單擊 Next,將該專案命名為“HelloWorld”,然後單擊 Finish。如果在 Eclipse 中切換至 Java 透檢視,那麼就可以看到這個新專案。它所具有的結構將有助於部署 Tomcat(參見圖 4)。

圖 4. Tomcat 專案結構

Tomcat 專案結構

正如我們稍後將看到的,work、WEB-INF 和 WEB-INF/src 目錄特別重要。

測試 Tomcat

單擊 Start Tomcat 工具欄按鈕。當 Tomcat 嘗試啟動時,Eclipse 將用資訊語句更新控制檯。如果它啟動了,並且沒有顯示任何堆疊跟蹤,那麼您已作好準備。如果看到堆疊跟蹤,則事情會麻煩一些。不幸的是,試錯法(通過您的好朋友 Google)是跟蹤所發生錯誤的惟一方法。好訊息是:可以進行重新整理,新的專案(如我們剛才建立的那個)將消除發生嚴重錯誤的可能性。

當 Tomcat 啟動時,您不會看到任何東西(除了控制檯內容)。您必須加以測試以確保它能工作。如果您需要一個快速指示,就設法開啟瀏覽器並輸入下列 URL:

http://localhost:8080/

如果一切正常,您就將看到一個精緻的 Tomcat 歡迎頁面,或一個列舉了 Tomcat“啟動內容”的目錄。不必關注第二個。當我們執行第一個 servlet 時,我們將證明 Tomcat 在工作。

宣告類

servlet 是一個類,因此,讓我們建立一個基本的。在 Eclipse 中,要在 HelloWorld 專案中建立一個名為 HelloWorldServlet 的類。該類如下所示:

public class HelloWorldServlet extends HttpServlet {

     public void service(HttpServletRequest request, HttpServletResponse response)
               throws ServletException, IOException {
          PrintWriter writer = response.getWriter();
          writer.println("Hello, World!");
          writer.close();
     }
}

輸入這些程式碼,然後按 Ctrl+Shift+O 組織一下匯入語句。Eclipse 將允許您匯入下列類:

  • java.io.IOException
  • java.io.PrintWriter
  • javax.servlet.ServletException
  • javax.servlet.HttpServlet
  • javax.servlet.HttpServletRequest
  • javax.servlet.HttpServletResponse

請注意,我們將 HttpServlet 作為子類,並重載了 service() 方法。service() 方法是 servlet 引擎將在 servlet 生命週期中呼叫的最基本的處理方法。它接收一個請求包裝器和一個響應包裝器,而我們可以在我們的方法中訪問它們。但在這裡,我們不需要這樣做,因為我們只是進行一些基本操作來使 servlet 工作。我們可能過載了 doGet(),但是 service() 將提供我們所需要的東西。

在我們的 service() 方法中,我們在 response 包裝器上呼叫 getWriter(),以便能夠將一串文字輸出到輸出流中。然後,我們關閉輸出流。這在生成輸出的 servlet 中是很典型的:您執行需要執行的邏輯,然後寫入輸出流。

配置 Web 應用程式

Java 程式設計工作就完成了,但是現在,我們還必須對配置檔案進行必要的工作。在我看來,這是 Web 開發的最大難點。幸好,該 Tomcat 外掛分擔了部分重擔。

右擊 HelloWorld 專案,並選擇 Properties。選擇屬性的 Tomcat 類別。您將看到該專案的環境,如下所示:

/HelloWorld

現在,去檢視您 Tomcat 原目錄中的檔案系統。轉至 conf/Catalina/localhost 子目錄。在那裡,您將看到一組 XML 檔案。具體地說,您將看到一個 HelloWorld.xml 檔案。開啟它。該檔案為 Tomcat 定義了一個 Web 應用程式語境。

<Context path="/HelloWorld" reloadable="true" docBase="path to your project\HelloWorld" 
	workDir="path to your project\HelloWorld\work" />

當 Tomcat 啟動時,它讀取這些上下文檔案,告訴 servlet 容器在哪裡找您的類(包括 servlet)。如果回顧載入 Tomcat 時向控制檯發出的資訊(INFO)語句,就會看到該列表中與 Web 應用程式上下文有關的資訊。

在 Tomcat 中配置 Web 應用程式的最後一步是建立 web.xml 檔案,需要將該檔案放在專案的 WEB-INF 目錄中。(注意:不要 將其放在 WEB-INF/src 目錄中 —— 該目錄將包含其他東西。)對於這個簡單例子,該檔案將如下所示:

<!DOCTYPE web-app PUBLIC '-//Sun Microsystems, Inc.//DTD 
	Web Application 2.3//EN' 'http://java.sun.com/dtd/web-app_2_3.dtd'>
<web-app>
  <servlet>
    <servlet-name>hello</servlet-name>
    <servlet-class>HelloWorldServlet</servlet-class>
  </servlet>
  
  <servlet-mapping>
    <servlet-name>hello</servlet-name>
    <url-pattern>/hello</url-pattern>
  </servlet-mapping>
</web-app>

該檔案向 Tomcat 定義了 Web 應用程式。該檔案中的 servlet-name 元素命名了所使用的 servlet。servlet-class 元素將該名稱對映到一個特定的類,該類定義了 servlet,即 HelloWorldServlet(本示例中)。servlet-mapping 元素告訴 Tomcat /hello(本例中)形式的 URL 對映我們的 servlet,這是由對映的 servlet 類定義的。

一旦設定好該檔案,就可以啟動 Tomcat 並能看到 servlet 載入。

執行 servlet

正如前面提到的,“執行 servlet”僅僅包括啟動 Tomcat,以及將 Web 瀏覽器指向將呼叫它的 URL。通過適當的工具欄按鈕啟動 Tomcat(如果它已經執行,則需要停止並重新啟動它)。一旦 Tomcat 結束啟動過程,它會開啟瀏覽器並輸出下列 URL:

http://localhost:8080/HelloWorld/hello

您將在瀏覽器視窗中看到一條好訊息。

動作 servlet

簡介

在 Web 開發初期,許多專業程式設計人員都不得不弄清當他們繼續時,如何較好地使用 servlet。最普遍的結果之一就是在伺服器上暴露 servlet。每種型別的請求都有一個。

這很快就變得令人頭痛,因此,程式設計人員開始在其 servlet 中包含條件邏輯使之更具適應性,以便處理多種型別的請求。一段時間後,這也產生了一些糟糕的程式碼。有一種更好的方式,稱作動作 servlet(action servlet),它實現了名為模型 2 的概念。據我瞭解,該思想是由 David M. Geary(關於他的更多資訊,請參閱 參考資料)首次寫到的,但是它已經較好的用於流行的 servlet 庫中了,例如 Jakarta Struts 專案。

在動作 servlet 中,並沒有指示 servlet 行為的條件邏輯,而是具有動作(程式設計人員定義的類),servlet 授權這些類來處理不同型別的請求。大多數情況下,這個面向物件(OO)的方法要優於擁有多個 servlet,或在一個 servlet 中有多個 if 條件。

我們的示例動作 servlet 執行的操作

我們的示例動作 servlet 將是一個極簡單的、基於瀏覽器的應用程式的網守(gatekeeper),該應用程式將允許我們建立、儲存、檢視以及刪除合同列表項。這些記錄項的格式都非常良好。最後,為了使用該應用程式,使用者將必須登入它,但是,我們稍後將在 使用者和資料 中新增這項功能。

設定該專案

在 Eclipse 中建立一個新的 Tomcat 專案,就像您為 HelloWorld 所做的一樣。請注意,專案名稱就是 servlet 預設的上下文值,因此,當輸入訪問 servlet 的 URL 時,將使用它。如果配置 Tomcat 使用上下文檔案,那麼它將為該專案自動建立一個上下文值。

Eclipse 還應建立一個具有正確結構的專案,並帶有下列重要目錄:

  • WEB-INF
  • WEB-INF/src
  • work

第一個目錄(WEB-INF)儲存重要的配置檔案,具體地說就是 web.xml 檔案,我們稍後將討論它。它還在 classes 目錄中包含了編譯的程式碼。第二個目錄(WEB-INF/src)儲存 Java 類的原始碼。第三個目錄(work)包含 JavaServer Pages(JSP)檔案的編譯程式碼,程式碼發生更改之後,每當我們第一次點選 JSP 頁面時,Tomcat 就會為我們自動建立這些編譯程式碼(我們將在下一面板上談論更多 JSP 技術)。該專案的根目錄包含所有的 JSP 原始檔,以及資料庫檔案。

請注意,您可以在 Eclipse 的 Resource 檢視中看到該結構的所有東西,但是在 Java Browsing 檢視中只能看到 WEB-INF/src 和 work 目錄。

所有這些檔案都包含在本教程所包括的 contacts.jar 檔案中(有關連結,請參閱 參考資料)。為了匯入它們,只要建立一個新的 Tomcat 專案,然後匯入 contacts.jar(使用 

相關推薦

Java Servlet 技術簡介

開始之前 關於本教程 在您最喜歡的 Web 瀏覽器中,您所閱讀的頁面是如何出現的呢?當登入到您最喜歡的 Web 站點時,該 Web 站點如何知道登入的使用者是您?而 Web 零售商又如何接受您的線上訂購呢?這些功能都是可能的,因為在這些場景的背後,運行於伺

Java ASM 技術簡介

什麼是ASM ASM 是一個 Java 位元組碼操控框架。它能被用來動態生成類或者增強既有類的功能。ASM 可以直接產生二進位制 class 檔案,也可以在類被載入入 Java 虛擬機器之前動態改變類行為。Java class 被儲存在嚴格格式定義的 .class 檔案裡,

servlet技術簡介

Servlet是使用Java Servlet 應用程式設計介面(API)及相關類和方法的 Java 程式。除了 Java Servlet API,Servlet 還可以使用用以擴充套件和新增到 API 的 Java 類軟體包。Servlet 在啟用 Java 的 Web

Servlet 技術簡介

Web技術的發展 靜態頁面階段 使用者訪問頁面過程: 使用者用瀏覽器通過HTTP協議請求伺服器上的Web頁面 伺服器上的Web伺服器軟體接收到請求後,讀取URI所標識的資源 在讀取的資源上加上訊息報頭髮送給客戶端的瀏覽器。 瀏覽器解析響應中的HTML

Java 音訊處理技術簡介

Java Sound包介紹 Java sound API 比較簡單陳舊,受作業系統影響較大,無法滿足一些專業場景。比如在 windows 下8路輸入的音效卡會被識別為4個2路輸入的裝置,無法協同工作。但是它提供了很多基礎 API,還是很有必要了解一下的。 包: sample

Java Web學習筆記 3 深入Servlet技術

public class SearchServlet extends HttpServlet { /** * The doGet method of the servlet. <br> * * This method is called when

模擬帶Servlet技術的HTTP伺服器的Java實現

上一篇文章說道, Web發展初期, 使用者只能檢視靜態頁面. 隨著Web發展,只能顯示靜態頁面的web顯然已經不能滿足大眾的需求,所以出現了CGI和用Java編寫的Servlet程式. Servlet可以根據使用者的請求動態的生成html頁面,然後發給瀏覽器.

學生管理系統開發程式碼分析筆記:jsp+java bean+servlet技術

1 序言 學習java web的時候很渴望有一份完整的專案給我閱讀,而網上的大部分專案拿過來都無法直接用,好不容易找到了一個學生管理系統也是漏洞百出。在此,我將邊修改邊學習這份程式碼,並且加上完全的註釋,以便日後查閱。 2 專案說明 該專案為常見的學生管理系統,系統用例就

Java Web應用開發技術簡介

  java web應用一般定義為:一個有HTML/XML文件,java Servlet,JSP(java Server Pages),JSTL(Java Server Pages Standard Tag Library),類以及其他任何種類檔案可以捆綁起來,並在來自多個

java servlet使用session

第一個 attr java bsp min http 瀏覽器 記錄 att 第一個servlet: 當瀏覽器第一次訪問服務器時,為它分配一個session HttpSession session=request.getSession(); 輸出該sess

Java-Servlet--《12-WEB應用中的普通Java程序如何讀取資源文件.mp4》 有疑問

疑問 文件 什麽 get java程序 blog java rop col \第五天-servlet開發和ServletConfig與ServletContext對象\12-WEB應用中的普通Java程序如何讀取資源文件.mp4; 多層時,DAO為了得到資源文件中的配置

Java核心技術之基本數據類型

又能 art 資料 string 1.4 get bool 讀取 大數 這篇文章。我們討論一些java的最主要的東西。這些東西我們一般剛剛學java的時候就學過,可是不一定真正明確。正好,我在做一個讀取內存的值,涉及到bit位的值的讀取和寫。那就能夠討論一個

Java核心技術學習筆記-繼承

java 繼承按照我們中文通俗的理解是不需要付出努力,就獲得別人的能力或資產,比如繼承父輩的家產,繼承父輩的表達能力,繼承父輩的外貌等等。在類裏面的繼承,可以理解不需要重新開發代碼,就能復用父類的方法和域。 在繼承關系裏面,可以分為父類和子類,子類繼承父類,那子類就有了跟父類一樣對外的方法

java核心技術-Object hashCode

object hashcode java核心技術 hashCode(散列碼)是由對象導出的一個整型值,散列碼是沒有規律的,如果對象不一樣,其散列碼基本也不會一致。 (String)字符串的散列碼是有內容導出的,兩個相同內容的String,其散列碼是一致的,但是StringBuff

P2P技術簡介

image clas 中間 我們 bit ping ebr restrict 存在 P2P技術簡介 NAT( Network Address Translation)穿越(俗稱打洞)技術 前言: p2p已經存在於我們生活的方方面面;我們通過下載在工具(比如迅

java servlet輸出數據

div logs light set tps resp class java se char httpServletResponse.setContentType("text/html;charset=UTF-8"); ht

Java核心技術】類型信息(Class對象 反射 動態代理)

示例 () 分享 不知道 必須 理解 name row 類庫 1 Class對象 理解RTTI在Java中的工作原理,首先需要知道類型信息在運行時是如何表示的,這是由Class對象來完成的,它包含了與類有關的信息。Class對象就是用來創建所有“常規”對象的,Java使用C

Java加密技術(一)——BASE64與單向加密算法MD5&SHA&MAC

sha256 integer 被人 sent 發現 Coding design 如果 targe http://snowolf.iteye.com/blog/379860 加密解密,曾經是我一個畢業設計的重要組件。在工作了多年以後回想當時那個加密、解密算法,實在是太單

java File.separator 簡介

第一個 字符 eight 最好 itl 默認 csdn 絕對路徑 paths 在Windows下的路徑分隔符和Linux下的路徑分隔符是不一樣的,當直接使用絕對路徑時,跨平臺會暴出“No such file or diretory”的異常。 比如說要在temp目錄下建

一位資深程序員大牛給予Java提升技術的學習路線建議

ooo 遷移 分布式文件 提升 family svn版本管理 vld 23種設計模式 企業級 15套java架構師、集群、高可用、高可擴 展、高性能、高並發、性能優化、Spring boot、Redis、ActiveMQ、Nginx、Mycat、Netty、Jvm大型分布