2014-01-22 116 views
6

我讀過@ BalusC最偉大的答案HERE但事情仍然沒有明確的對我說:JSP在哪裏運行?在客戶端或服務器端?

,一方面,當我寫一個servlet,我做這樣的事情:

 String addressPath = "/WEB-INF/results/employee/employeePage.jsp"; 
     RequestDispatcher dispatcher = request.getRequestDispatcher(addressPath); 
     dispatcher.forward(request, response); 

,然後,用戶在他的屏幕上看到名爲employeePage.jsp的JSP頁面。這並不意味着JSP運行在客戶端?

因此,JSP運行在客戶端或服務器端(JSP = Java服務器頁面)?

+0

JSP(Java Server Pages)是一種服務器端技術,用於Web應用程序的表示層。它不能運行客戶端。 – SSpoke

+0

'JSP'在'servlet容器'中的'application serve'r上運行,因爲它在執行前轉換爲'servlet'。 –

回答

7

JSP運行在服務器端,但除了HTML(和CSS)之外,JSP還常用於服務器端,然後運行在客戶端。

一個非常簡單的例子就是在訪問者的網頁中包含一些Google Analytics跟蹤器(使用JavaScript)的JSP。

請注意,我並不是說所有的JavaScript總是在客戶端運行:還有服務器端JavaScript。我要說的是,JSP通常提供JavaScript,而JSP提供的JavaScript則在客戶端運行。

+0

只是位的Javascript運行在客戶端?我會說整個HTML響應是由客戶端瀏覽器「運行」(即解析)(儘管它是在服務器端生成的)。你的意思是說只有Javascript部分是由瀏覽器執行的代碼,對吧?我猜這裏的HTML是一個灰色區域,因爲解析和獲得視覺輸出可能被認爲是「運行」(按照OP問題)。 – Piovezan

2

JSP是一種基於Servlets構建的服務器端技術。如果您使用像Tomcat這樣的容器,則可以看到從JSP文件生成的Servlet。本質上,調用dispatcher.forward(request, response);只是對另一個Servlet的調用。

4

JSP在運行之前被翻譯成Java servlet,它處理HTTP請求並生成類似於任何servlet的響應。但是,JSP技術提供了一種更方便的方式來編寫servlet。翻譯發生在應用程序第一次運行時。 JSP翻譯器由URL中的.jsp文件擴展名來觸發。 JSP與servlet完全互操作。您可以包含來自servlet的輸出或將輸出轉發到servlet,並且servlet可以包含來自JSP的輸出或轉發輸出到JSP。

1

jSP只在服務器端運行。 這是java代碼只有 Developer's可以很容易地在jsp中編寫代碼。

jsp最終只轉換成java servlet。 當我們使用dispatcher.forward(request, response);它只會將您重定向到該servlet。

1

我明白我遲到回答這個問題,但可能是它可以幫助某人。

的JSP生命週期包括以下階段:

1)編譯

2)初始化

3)執行

4)清理

JSP編譯

當瀏覽器請求JSP時,JSP引擎首先檢查是否需要編譯頁面。如果該頁面從未編譯過,或者JSP自上次編譯以來已被修改,則JSP引擎將編譯該頁面。

編譯過程涉及三個步驟 -

1)解析JSP。

2)將JSP轉換爲servlet。

3)編譯servlet。

當JSP被轉換成servlet時,它必須在服務器端執行以提供請求。

相關問題