2010-08-01 111 views
2

我對某些術語很困惑,我知道用於編寫一些「通常的可執行」程序的Java。但是我發現你可以用java做servlet,然後聽說JSP。Servlets,JSP,Java?

我不確定servlet和JSP的區別..我沒有想到,我認爲它就像PHP或類似的東西。

您是否有過任何有組織的參考資料(或者介意解釋「通常」Java向這些技術的轉變)?

謝謝。

+0

Dupe/related:[JSF,Servlet和JSP之間有什麼區別?](http://stackoverflow.com/questions/2095397/what-is-the-difference-between-jsf-servlet-and-jsp )和[什麼是主流Java替代ASP.NET/PHP](http://stackoverflow.com/questions/2556553/what-is-the-main-stream-java-alternative-to-asp-net -php)。 – BalusC 2010-08-01 23:37:28

回答

1

Servlet是HTTP,在如Tomcat,碼頭一個servlet/JSP應用引擎運行的聽衆等

JSP是被編譯成servlet模板。它們允許您使用類似標籤的模板表示法編寫HTML生成的servlet,以使動態行爲成爲可能。

0

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

+0

這在技術上是正確的,但「最佳實踐」是不要將Java嵌入到JSP中。事實上,如果你的web應用程序是用MVC體系結構設計的,那麼你應該*使用JSP來進行視圖渲染。 – 2010-08-01 22:19:18

2

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

JSP是Java Server Pages。這是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。然而,很多人認爲這些也是非常複雜的,所以有很多不同的Web application frameworks for Java

我提到的任何關鍵字都會引導您到其他信息鏈接。儘管完整的信息可以在Oracle's documentation on J2EE中找到,但我不能推薦閱讀它作爲介紹。這是可怕的沉重,詳細和深遠。請看一些現代第三方,最好是開源框架,我認爲這些框架不那麼痛苦。我個人很喜歡Wicket,但它是衆多人中的一員,我知道發佈有效建議的替代方案太少了。

0

回到過去,有一些小應用程序是運行在客戶端瀏覽器中的應用程序,反過來是servlet,它是在基於java的web服務器(容器)中運行的應用程序。

該小服務程序有權訪問信息以將信息傳遞迴瀏覽器,並從資源(如cookie和標頭)獲取信息。但是,許多人都熟悉ASP和PHP,並且編寫servlet可能會更困難,所以爲了使框架能夠抽象出來並使Web開發更容易,我們有JSP(Java Server Pages)。這些將編譯爲servlet,這只是一個更簡單的方法來創建網頁。

這是一個簡單的解釋,所以我跳過了一些部分,例如談論如何使用模板,但通過查看JSP生命週期這裏可以得到一個更好的主意:http://java.sun.com/j2ee/tutorial/1_3-fcs/doc/JSPIntro4.html

JSP頁面有時會受到某些限制,例如JSP頁面無法返回二進制數據,所以如果您想要發回圖像或PDF,那麼servlet是您唯一的選擇。

0

「servlet API」是一組Java接口(「合同」),它允許您編寫處理來自瀏覽器的單個Web請求的代碼片段,並生成對此的響應。這通常是一個網頁,但也可能是生成的圖像或聲音文件。

基本上,作爲一名servlet程序員,您不必關心「我應該如何生成這個請求的響應」。周圍的環境處理所有其他事情,例如監聽請求的端口,記錄請求信息,保存活動會話,以便用戶不會注意到服務器已重啓等。

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

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

很快變得乏味。因此,JSP被髮明出來,允許你說

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

而不是在頁面大多是HTML但有一點代碼在裏面。

經驗表明,HTML框架和Java數據表示應該是分開的,因爲HTML和Java在同一個文件中的混合使其很難維護。

1

與PHP一樣,Servlet和JSP用於創建動態HTML頁面,但使用Java語言。在Java世界中,首先我們有了Servlets。 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作者。

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

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

+0

謝謝。有用的解釋:) – makakko 2010-08-02 04:35:25