● Web Container
負責管理JSP/Servlet運行過程中所需要的各種資源,並負責與 Web伺服器進行溝通,管理JSP/Servlet中所有物件的產生與消滅,它其實是個用Java撰寫而成的程式。
以JSP來說,容器負責將JSP轉換為Servlet程式碼,然後編譯Servlet程式碼,將之載入執行環境並執行,容器也提供了許多資源,除了基本的 Servlet載入與執行之外,例如Web環境設定、使用者認證、session追蹤等等,沒有容器,JSP轉譯而成的Servlet或直接撰寫的 Servlet程式,就不稱之為Servlet,而只是一個Java類別,要想真正發揮JSP/Servlet的功能,正確的設計出良好架構與功能的 Web應用程式,瞭解容器的特性是不可少的。
Tomcat嚴格來說是Web Container,不是HTTP伺服器,只不過下載Tomcat並安裝後,會附帶一個簡單的HTTP伺服器程式。
在安裝好 Tomcat 之後,Web應用程式應該放在安裝目錄的 webapps 下,該目錄下有一個 ROOT 目錄,它是 Tomcat 附帶的 HTTP 伺服器預設根目錄,當您使用 http://localhost:8080/ 連接時,將會執行 ROOT/index.jsp 這個JSP網頁並顯示 Tomcat的預設首頁。
若要測試練習,可以自行在webapps下建立一個專用的練習目錄(TestApp),並在練習目錄下建立FirstApp.jsp檔案,同時建立WEB - INF目錄,並撰寫好web.xml (可參考 ROOT/WEB-INF/目錄下的web.xml),這是在Web容器下建立一個基本Web應用程式該有的步驟。
FirstApp.jsp |
<html> |
web.xml |
<?xml version="1.0" encoding="ISO-8859-1"?> <web-app xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd" version="2.4"> <display-name>My Web Application</display-name> 設定站台名稱 <description> 描述站台 A application for test. </description> </web-app> |
最後可於網址列鍵入測試執行結果(Tomcat 必須是啟動的狀態喔~)。(Quoting 和 Escape 規則 於後詳述)
http://localhost:8080/TestApp/FirstApp.jsp
This is My First App Now time is: Thu Apr 01 16:51:29 CST 2010 隨便顯示一段文字 1) Output is: null 2) Output is: This is a test! <% 與 %>被用來作為JSP中Java語法的部份 |
完整產生的Servlet原始碼放置於 work\Catalina\localhost\TestApp\org\apache\jsp (由於 package 是 org.apache.jsp ) 下的 FirstApp_jsp.java,編譯好的 Servlet 類別檔 FirstApp_jsp.class 也在其下。
FirstApp_jsp.java |
import javax.servlet.http.*; // 這是Java的註解方式,會出現在轉譯的Servlet原始碼中之對應位置 out.println("隨便顯示一段文字<br>"); /*
|
在轉換為 Servlet 之後,由<% 與 %>包括的部份主要集合為一個 _jspService() 方法。
● JSP 生命週期
執行 JSP 網頁可分為兩個時期:
1. 轉譯時期 Translation Time:JSP 網頁轉譯成 Servlet 類別 (.jsp → .java → .class)。
轉譯後的 Servlet 內容主要包含三部份: (Servlet 的生命週期請參考此)
public void _jspInit() { public void _jspService(HttpServletRequest request, HttpServletResponse response) throws java.io.IOException, ServletException { |
若要對 JSP 撰寫一些初始化的動作,是重新定義 jspInit() 方法,為了要能夠指定特定的初始參數給特定的JSP網頁,您必須要在 web.xml 中如下定義,然後使用 config 隱含物件取得初始參數:
web.xml |
<servlet> <servlet-name>JSPConfigTest</servlet-name> <jsp-file>/config.jsp</jsp-file> <init-param> <param-name>count</param-name> <param-value>100</param-value> </init-param> </servlet> |
2. 請求時期 Request Time:Servlet 類別執行後,回應結果至客戶端。
● JSP的構成元件
JSP 網頁主要可分為以下兩部份:
1. Elements:必須由 JSP Container 處理的部份,其有4種型態:
(4) EL Elements:
2. Template Data:JSP Container 不處理的部份,e.g. HTML 內容
◎ 撰寫註解 (Comments) 語法
<% // 這是Java的註解方式,會出現在轉譯的Servlet原始碼中之對應位置 /* 這是源自C的註解方式,也會出現在轉譯的Servlet原始碼中之對應位置 */ %> <% -- 這註解文字,不會出現在轉譯的Servlet原始碼中 -- %> |
◎ Quoting 和 Escape 規則
<% 與 %>是 寫JSP語法專用符號,若要畫面顯示出 <%、%>、 ' (單引號)、" (雙引號)、\ (斜線),需要做些是適當的修改。
<% 符號請使用 <%
%> 符號請使用 %\> 或 %>
' 單引號請使用 \'
" 雙引號請使用 \"
\ 斜線請使用 \\
留言列表