簡體   English   中英

Servlet,JSP,Java?

[英]Servlets, JSP, Java?

我對某些術語感到很困惑,我知道Java可以編寫一些“通常的可執行程序”。 但是我發現您可以使用Java進行servlet,然后聽說JSP。

我不確定servlet和JSP的區別。我不知道,我認為它像PHP或類似的東西。

您是否對此有任何有組織的參考(或打算解釋“通常的” Java向該技術的過渡)?

謝謝。

Servlet是在Web應用程序的特殊環境中運行的Java,umm程序。 正如您所期望的那樣,他們接收並處理Web請求。 幾乎直接的Java代碼以及一些約定。 Servlet具有挖掘請求參數的方法,並且可以將打印機輸出流連接到最終將返回給用戶瀏覽器的輸出流。

JSP是Java服務器頁面。 那是HTML頁面和一種預處理器。 在通常的HTML標簽中,預處理器評估一種模板/標簽語言。 本質上,您可以編寫HTML頁面,但可以包含Java代碼。 “預處理器”將您的JSP轉換為servlet; HTML標記及其內容成為Servlet代碼中的字符串。 自從您提到PHP以來,是的,JSP看上去大致類似於(某些)融合了HTML的PHP​​代碼。

JSP是一種創建具有活動Java內容的網頁的非常簡單的方法,與Microsoft的ASP大致相當。 但是,大多數Java社區都同意JSP混合HTML標記和代碼的方式令人討厭,這導致應用程序非常不干凈,並且不允許Web設計人員和程序員之間進行專門化。 “真正的”程序員喜歡抨擊PHP就是同樣的優雅。

因此,JSP大多已失寵,並已被混合Web內容和代碼的其他解決方案所取代。 同時,行業中最著名/最成功的是“行業標准” StrutsJava Server Faces 但是,很多人都認為它們也非常復雜,因此有許多不同的Java Web應用程序框架

我提到的任何關鍵字都會帶您到其他信息鏈接。 可以在Oracle有關J2EE的文檔中找到詳盡的完整信息但我不建議您將其作為簡介來閱讀。 它令人恐懼,沉重,詳盡而深遠。 一定要看一些現代的第三方,最好是開源框架,我認為這些框架要痛苦得多。 我個人討厭Wicket,但它是其中的一種,而且我對發布有效建議的替代方案知之甚少。

Servlet是在Tomcat / Jetty等Servlet / JSP應用程序引擎中運行的HTTP偵聽器。

JSP是被編譯為Servlet的模板。 它們允許您以類似標簽的模板符號編寫HTML生成的servlet,從而使動態行為成為可能。

Servlet和JSP與PHP一樣,用於創建動態HTML頁面,但使用Java語言。 在Java世界中,首先我們有Servlet。 Servlet是實現某些接口的Java類。 然后,舉例來說,假設您希望Servlet輸出這樣的HTML頁面:

<html>
<head></head>
<body>current time</body>
</html>

當前時間將動態生成並顯示當前時間。 為此,您必須編寫多個out.println語句:

out.println("<html>");
out.println("<head></head>");
out.println("<body>" + new Date() + "</body>");
out.println("</html>");

如您所見,與PHP相比,這非常冗長且無法維護。 這就是JSP誕生的原因。 您可以使用以下代碼在JSP中實現相同的目的:

<html>
<head></head>
<body><%= new Date() %></body>
</html>

對於HTML作者而言,這不再那么冗長,更易讀,並且更加熟悉。

現在,為了像在Apache + Mod PHP中運行PHP一樣,為JSP和Servlet提供服務器,您需要一種稱為Servlet容器的特殊服務器。 Tomcat是一個流行的開放源代碼Servlet容器:tomcat.apache.org

如果您還有其他問題,請告訴我。

簡而言之,JSP是一種通過將Java嵌入模板中來構建servlet的方法。

過去有applet,它們是在客戶端瀏覽器中運行的應用程序,而相反的是servlet,它們是在基於Java的Web服務器(容器)中運行的應用程序。

Servlet有權訪問信息以將信息傳遞回瀏覽器,並從Cookie和標頭之類的資源中獲取信息。

但是,許多人都熟悉ASP和PHP,編寫servlet可能會更困難,因此,為了使框架能夠抽象出來並使Web開發更容易,我們有了JSP(Java服務器頁面)。 這些將編譯為servlet,這只是創建網頁的一種簡便方法。

這是一個簡化的說明,因此我跳過了一些部分,例如談論如何使用模板,但是您可以通過查看此處的JSP lifecyle來獲得更好的主意: http : //java.sun.com/j2ee /tutorial/1_3-fcs/doc/JSPIntro4.html

JSP頁面存在一定的局限性,有時會迫使您使用servlet,例如JSP頁面無法返回二進制數據,因此,如果要發送回圖像或PDF,則servlet是唯一的選擇。

“ Servlet API”是一組Java接口(“合同”),使您可以編寫小的代碼段來處理來自瀏覽器的單個Web請求並生成對此的響應。 通常是網頁,但也可能是生成的圖像或聲音文件。

基本上,作為servlet程序員,您不必只關心“我應該生成什么作為對此請求的響應”。 周圍環境處理所有其余工作,例如偵聽端口請求,記錄請求信息,保存活動會話,以便用戶不會注意到服務器已重新啟動等。

在這樣的servlet中,響應是通過代碼生成的,並且

out.println("<li>" + name + ": " + address +"</li>");

很快變得乏味。 因此發明了JSP,讓您可以說

<li><%= name %>: <%= address%></li>

而不是在大多數HTML頁面中,但其中包含一些代碼。

此后的經驗表明,應該將HTML骨架和Java數據表示形式分開,因為將HTML和Java混合在同一個文件中很難維護。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM