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


前言

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

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

 

系列目錄

一、.NET C#Java沒那么難,開發環境篇

二、.NET C#到Java沒那么難,Servlet篇

三、.NET C#到Java沒那么難,MVC篇

四、.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框架都比較成熟了.

 

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() 方法

 

4. Java Filter 和 HttpModule,ActionFilter

1).Java Filter

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

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

Java Filter過濾器

2).HttpModule 和 ActionFilter

HttpModule 是asp.net WebForm 的Filter

淺談HttpModule

ActionFilter 是 asp.net MVC 的Filter

四種基本Filter概述

 

5.JSTL,EL 和 Razor 表達式

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

1). JSTL標簽

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

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

2).EL表達式

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

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

3).Razor

這里對比的是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的
某一屬性值,他相當於頁面中所有功能的集大成者,它的本類名也叫

page和pageContext

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 extends HttpServlet {
 
  private String message;

  public void init() throws ServletException
  {
      // 執行必需的初始化
      message = "Hello World";
  }

  public void doGet(HttpServletRequest request,
                    HttpServletResponse response)
            throws ServletException, IOException
  {
      // 設置響應內容類型
      response.setContentType("text/html");

      // 實際的邏輯是在這里
      PrintWriter out = response.getWriter();
      out.println("<h1>" + message + "</h1>");
  }
  
  public void destroy()
  {
      // 什么也不做
  }
}

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

<web-app>      
    <servlet>
        <servlet-name>HelloWorld</servlet-name>
        <servlet-class>HelloWorld</servlet-class>
    </servlet>

    <servlet-mapping>
        <servlet-name>HelloWorld</servlet-name>
        <url-pattern>/HelloWorld</url-pattern>
    </servlet-mapping>
</web-app>  

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

 

8. Servlet 國際化

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

  • 國際化(i18n):這意味着一個網站提供了不同版本的翻譯成訪問者的語言或國籍的內容。
  • 本地化(l10n):這意味着向網站添加資源,以使其適應特定的地理或文化區域,例如網站翻譯成印地文(Hindi)。
  • 區域設置(locale):這是一個特殊的文化或地理區域。它通常指語言符號后跟一個下划線和一個國家符號。例如 "en_US" 表示針對 US 的英語區域設置。

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

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

java.util.Locale request.getLocale()

檢測區域設置

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

序號 方法 & 描述
1 String getCountry()
該方法以 2 個大寫字母形式的 ISO 3166 格式返回該區域設置的國家/地區代碼。
2 String getDisplayCountry()
該方法返回適合向用戶顯示的區域設置的國家的名稱。
3 String getLanguage()
該方法以小寫字母形式的 ISO 639 格式返回該區域設置的語言代碼。
4 String getDisplayLanguage()
該方法返回適合向用戶顯示的區域設置的語言的名稱。
5 String getISO3Country()
該方法返回該區域設置的國家的三個字母縮寫。
6 String getISO3Language()
該方法返回該區域設置的語言的三個字母的縮寫。

深入理解Java國際化

 

9. 擴展閱讀

Java程序員學C#基本語法

C#與Java功能比較

C#與Java功能比較2

C#與Java真假泛型

Servle教程

 

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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM