-
概念:
Java Server Pages: java伺服器端頁面
可以了解為:一個特殊的頁面,其中既可以指定定義html标簽,又可以定義java代碼
用于簡化書寫!!!
2.圖解:
這是一個圖解,上面的代碼是需要通過java代碼進行編寫的動态資源,而下面的網頁是靜态資源,如果就用html頁面是無法達到該效果的,但是,如果在java代碼上,通過resp.getWriter().write(“xxx
”);這種形式的話,很顯然代碼量太大。故可以使用jsp頁面來進行解決這個問題,因為它可以寫java代碼。 -
原理
JSP本質上就是一個Servlet。
圖解:
如果找到了index.jsp則假設給它轉換為-index.java檔案,然後再編譯生成.class檔案。然後,給他傳回浏覽器,因為能給浏覽器通路的.class檔案的話,就是一個Servlet的繼承或實作類,是以,jsp檔案其實是一個Servlet。
實際測試:
一通路jsp就會生成work目錄,這個目錄下面放着jsp對應的java檔案和class檔案;
找到class類 打開java檔案: 對于,HttpJspBase這個類,可以這麼了解,因為tomcat是由apache公司寫的,由于我們運作了tomcat。是以,這個類是實作的,通過檢視tomcat的源代碼 會發現他是繼承了HttpServlet的。 是以它也算是一個Servlet的,其實jsp是apache公司為我們寫的一個servlet ,原理也是通過resp.getWriter().write(“xxx
”);這種形式。隻是apache公司給我們做了這種體力活(輸出頁面标簽);是以,jsp可以用來簡化代碼的書寫。 - JSP的腳本:JSP定義Java代碼的方式(apache要求java寫的格式)
- <% 代碼 %>:定義的java代碼,在service方法中。service方法中可以定義什麼,該腳本中就可以定義什麼。
- <%! 代碼 %>:定義的java代碼,在jsp轉換後的java類的成員位置。(定義成員變量和方法,用的少,因為多線程安全問題)
-
<%= 代碼 %>:定義的java代碼,會輸出到頁面上。輸出語句中可以定義什麼,該腳本中就可以定義什麼。
測試如下:
-
JSP的内置對象:
在jsp頁面中不需要擷取和建立,可以直接使用的對象
jsp一共有9個内置對象(因為tomcat已經聲明過了)
今天學三個:
1.request
2.response
3.out:字元輸出流對象,可以将資料輸出到頁面上。和response.getWriter()類似
response.getWriter()和out.write()的差別:
在tomcat伺服器真正給用戶端做出響應之前,會先找response緩沖區資料,再找out緩沖區資料。
response.getWriter()資料輸出永遠在out.write()之前
測試如下:
結論:response先輸出,out則按照定義順序輸出。