天天看點

java servlet .net_.NET C#到Java沒那麼難,Servlet篇" + message + "

前言

.NET C#到Java沒那麼難,都是面向對象的語言,而且語法還是相似的,先對比一下開發環境,再到Servlet,再到MVC,都是一樣一樣的,隻是JAVA的配制項比較多而已,隻要配好一個,後面都是copy,簡直so easy,而且用myeclipse可以省一些配制

Java與.NET的區別不在它們的本身,最大的區別在於他們背後的力量,相信大家都能感覺得到,我就不多說。

系列目錄

四、.NET C#到Java沒那麼難,MVC架構篇

五、.NET C#到Java沒那麼難,DB架構篇

六、.NET C#到Java沒那麼難,Nosql架構篇

七、.NET C#到Java沒那麼難,微服務篇

八、.NET C#到Java沒那麼難,大數據篇

.NET C#到Java沒那麼難,Servlet篇

目錄

1. Servlet 和 Ashx(一般處理程式)

2. Servlet 和 JSP

3. Servlet的生命周期

4. Java Filter 和 HttpModule,ActionFilter

5.JSTL,EL 和 Razor 表達式

6. JSP內置9大對象,可和ASP.NET 對應

7. Servlet 示例代碼

8. Servlet 國際化

9. 擴展閱讀

1. Servlet 和 Ashx(一般處理程式)

Java Web和ASP.NET也是有相似的,java web的核心是Servlet,Jsp其實本質都是Servlet,而Servlet的流程可以比較清晰看到整個前背景是怎麼工作的,類似.NET的ashx一般處理程式,Java是MVC的主要倡導者,隨着web技術發展,Servlet主要被當作Controler使用,Jsp作為View使用,這在許多MVC架構有所體現.得益於開源社區的活躍,流行的Java MVC架構都比較成熟了.

java servlet .net_.NET C#到Java沒那麼難,Servlet篇" + message + "

2. Servlet 和 JSP

jsp最終也是轉化被成Servlet,.java就是一個Servlet

當一個JSP檔案第一次被請求的時候,Tomcat首先會把這個JSP檔案轉換成一個Java源檔案。在轉換過程中如果發現JSP檔案有語法錯誤,轉換過程將中斷,並向服務端和客戶端輸出出錯資訊。如果轉換成功,Tomcat用javac把該Java源檔案編譯成相應的.class檔案並將該.class檔案加載到內存中。

3. Servlet的生命周期

1).Servlet生命周期分為三個階段:

1,初始化階段:調用init()方法

2,響應客戶請求階段:調用service()方法

Service()方法內部對請求的類型(get/post)進行了判斷,自動調用doPost/doGet

3,終止階段:調用destroy()方法

2).Servlet的單例多線程:

單例:Servlet隻在用戶第一次請求時被實例化,並且是單例的,在服務器重啟或關閉時才會被銷毀。

多線程:當請求到達時,Servlet容器(Tomcat...)通過線程池中可用的線程給請求者並執行Service方法,每個線程執行一個單一的 Servlet 實例的 service() 方法

java servlet .net_.NET C#到Java沒那麼難,Servlet篇" + message + "

4. Java Filter 和 HttpModule,ActionFilter

1).Java Filter

Filter也稱之為過濾器,它是Servlet技術中最實用的技術,Web開發人員通過Filter技術,對web服務器管理的所有web資源:例如Jsp, Servlet, 靜態圖片檔案或靜態 html 檔案等進行攔截,從而實現一些特殊的功能。例如實現URL級別的權限訪問控制、過濾敏感詞匯、壓縮響應資訊等一些高級功能。

它主要用於對用戶請求進行預處理,也可以對HttpServletResponse進行後處理。使用Filter的完整流程:Filter對用戶請求進行預處理,接着將請求交給Servlet進行處理並生成響應,最後Filter再對服務器響應進行後處理。

2).HttpModule 和 ActionFilter

HttpModule 是asp.net WebForm 的Filter

ActionFilter 是 asp.net MVC 的Filter

5.JSTL,EL 和 Razor 表達式

把代碼標簽化,表達式化,讓前端人員也能維護,實現前後端分離

JSP標準標簽庫(JSTL)是一個JSP標簽集合,它封裝了JSP應用的通用核心功能。

JSTL支援通用的、結構化的任務,比如疊代,條件判斷,XML文檔操作,國際化標簽,SQL標簽。 除了這些,它還提供了一個架構來使用內建JSTL的自定義標簽。

EL(Expression Language)  目的:為了使JSP寫起來更加簡單。

它提供了在 JSP 中簡化表達式的方法。它是一種簡單的語言,基於可用的命名空間(PageContext 屬性)、嵌套屬性和對集合、操作符(算術型、關系型和邏輯型)的訪問符、映射到 Java 類中靜態方法的可擴展函數以及一組隱式對象。

這裡對比的是Razor表達式

6. JSP內置9大對象,可和ASP.NET 對應

1).request對象

客戶端的請求資訊被封裝在request對象中,通過它才能了解到客戶的需求,然後做出響應。它是HttpServletRequest類的實例。

2).response和out對象

response對象包含了響應客戶請求的有關資訊,它是HttpServletResponse類的實例。

out對象是JspWriter類的實例,是向客戶端輸出內容常用的對象

response和out

3).session對象

session對象指的是客戶端與服務器的一次會話,從客戶連到服務器的一個

WebApplication開始,直到客戶端與服務器斷開連接為止。它是HttpSession

類的實例.

4).page和pageContext對象

page對象就是指向當前JSP頁面本身,有點象類中的this指針,它是java.lang.Object類的實例

pageContext對象提供了對JSP頁面內所有的對象及名字空間的訪問,也就是

說他可以訪問到本頁所在的SESSION,也可以取本頁面所在的application的

某一屬性值,他相當於頁面中所有功能的集大成者,它的本類名也叫

5).application對象

application對象實現了用戶間數據的共享,可存放全局變量。它開始於服務器

的啟動,直到服務器的關閉,在此期間,此對象將一直存在;這樣在用戶的前

後連接或不同用戶之間的連接中,可以對此對象的同一屬性進行操作;在任何

地方對此對象屬性的操作,都將影響到其他用戶對此的訪問。服務器的啟動和

關閉決定了application對象的生命。它是ServletContext類的實例。

6).exception對象

exception對象是一個例外對象,當一個頁面在運行過程中發生了例外,就產

生這個對象。如果一個JSP頁面要應用此對象,就必須把isErrorPage設為true,

否則無法編譯。他實際上是Java.lang.Throwable的對象

7).config對象

config對象是在一個Servlet初始化時,JSP引擎向它傳遞資訊用的,此資訊包括Servlet初始化時所要用到的參數(通過屬性名和屬性值構成)以及服務器的有關資訊(通過傳遞一個ServletContext對象)

7. Servlet 示例代碼

1).Hello World 示例代碼

//導入必需的 java 庫

import java.io.*;import javax.servlet.*;import javax.servlet.http.*;//擴展 HttpServlet 類

public class HelloWorld extendsHttpServlet {privateString message;public void init() throwsServletException

{//執行必需的初始化

message = "Hello World";

}public voiddoGet(HttpServletRequest request,

HttpServletResponse response)throwsServletException, IOException

{//設置響應內容類型

response.setContentType("text/html");//實際的邏輯是在這裡

PrintWriter out =response.getWriter();

out.println("

" + message + "

");

}public voiddestroy()

{//什麼也不做

}

}

2).WEB-INF/ web.xml 配制

HelloWorld

HelloWorld

HelloWorld

/HelloWorld

3).然後運行tomcat,訪問你的Servlet

java servlet .net_.NET C#到Java沒那麼難,Servlet篇" + message + "

8. Servlet 國際化

在我們開始之前,先來看看三個重要術語:

國際化(i18n):這意味着一個網站提供了不同版本的翻譯成訪問者的語言或國籍的內容。

本地化(l10n):這意味着向網站添加資源,以使其適應特定的地理或文化區域,例如網站翻譯成印地文(Hindi)。

區域設置(locale):這是一個特殊的文化或地理區域。它通常指語言符號後跟一個下劃線和一個國家符號。例如 "en_US" 表示針對 US 的英語區域設置。

當建立一個全球性的網站時有一些注意事項。本教程不會講解這些注意事項的完整細節,但它會通過一個很好的實例向您示範如何通過差異化定位(即區域設置)來讓網頁以不同語言呈現。

Servlet 可以根據請求者的區域設置拾取相應版本的網站,並根據當地的語言、文化和需求提供相應的網站版本。以下是 request 對象中傳回 Locale 對象的方法。

java.util.Localerequest.getLocale()

檢測區域設置

下面列出了重要的區域設置方法,您可以使用它們來檢測請求者的地理位置、語言和區域設置。下面所有的方法都顯示了請求者瀏覽器中設置的國家名稱和語言名稱。

序號

方法 & 描述

1

String getCountry()

該方法以 2 個大寫字母形式的 ISO 3166 格式傳回該區域設置的國家/地區代碼。

2

String getDisplayCountry()

該方法傳回適合向用戶顯示的區域設置的國家的名稱。

3

String getLanguage()

該方法以小寫字母形式的 ISO 639 格式傳回該區域設置的語言代碼。

4

String getDisplayLanguage()

該方法傳回適合向用戶顯示的區域設置的語言的名稱。

5

String getISO3Country()

該方法傳回該區域設置的國家的三個字母縮寫。

6

String getISO3Language()

該方法傳回該區域設置的語言的三個字母的縮寫。

9. 擴展閱讀

未完,待續,歡迎評論拍磚

繼續閱讀