1. 程式人生 > >【修真院java小課堂】什麼是jsp?

【修真院java小課堂】什麼是jsp?

大家好,我是IT修真院鄭州分院第11期的JAVA學員周巨集浩,一枚正直純潔善良的java程式設計師。

今天給大家分享一下,什麼是jsp?。

1.背景介紹

JSP全名為Java Server Pages,中文名叫java伺服器頁面,JSP是一種動態頁面技術,它的主要目的是將表示邏輯從Servlet中分離出來。它實現了Html語法中的java擴充套件(以 <%, %>形式)。

JSP的根本是一種Java servlet,主要用於實現Java web應用程式的使用者介面部分。網頁開發者們通過結合HTML程式碼、XML元素以及嵌入JSP操作和命令來編寫JSP。JSP通過網頁表單獲取使用者輸入資料、訪問資料庫及其他資料來源,然後動態地建立網頁。

2.知識剖析

1.jsp工作原理是什麼?

1)當客戶第一次請求JSP頁面時,JSP引擎會通過預處理把JSP檔案中的靜態資料(HTML文字)和動態資料(Java指令碼)全部轉換為Java程式碼。 2)JSP引擎把生成的.java檔案編譯成Servlet類檔案(.class)。對於Tomcat伺服器而言,生成的類檔案預設的情況下存放在\work目錄。 3)編譯後的class物件被載入到容器中,並根據使用者的請求生成HTML格式的響應頁面。

2.jsp九大內建物件

1)request內建物件是最常用的物件之一,它代表的是java.servlet.HttpServletRequest類的物件。request內建物件中包含了有關瀏覽器請求的資訊,並提供了多個用於獲取cookie、header以及session內資料的方法。

2)response物件與request物件相對應,它是用於響應客戶請求,向客戶端輸出資訊。response是javax.servlet.HttpServletResponse類的物件。response物件提供了多個方法用來處理HTTP響應,可以呼叫response中的方法修改ContentType中的MIME型別以及實現頁面的跳轉等。

3)page物件有點類似於Java程式設計中的this指標,就是指當前JSP頁面本身。page是java.lang.Object類的物件。

4)session是與請求有關的會話期,它是java.servlet.http.HttpSession類的物件,用來表示和儲存當前頁面的請求資訊。

5)application是javax.servlet.ServletContext類物件的一個例項,用於實現使用者之間的資料共享,application 物件可將資訊儲存在伺服器中,直到伺服器關閉,否則application物件中儲存的資訊會在整個應用中都有效。

6)out 物件用於在Web瀏覽器內輸出資訊,並且管理應用伺服器上的輸出緩衝區。在使用 out 物件輸出資料時,可以對資料緩衝區進行操作,及時清除緩衝區中的殘餘資料,為其他的輸出讓出緩衝空間。待資料輸出完畢後,要及時關閉輸出流。

7)exception內建物件是用來處理頁面出現的異常錯誤,它是java.lang.Throwable類的一個物件。Jsp頁面檔案必須在isErrorPage=true的情況下才可以使用該物件;該物件一般配合Page指令一起使用,通過指定某個頁面為錯誤處理頁面,把所有的錯誤都集中到那個頁面進行處理,可以使整個系統的效能得到加強。

8)config內建物件是ServletConfig類的一個例項。在Servlet初始化的時候,JSP引擎通過config向它傳遞資訊。這種資訊可以是屬性名/值匹配的引數,也可以是通過ServletContext物件傳遞的伺服器的有關資訊。

9)pageContext物件是一個比較特殊的物件。它相當於頁面中所有其他物件功能的最大整合者,即用它可以訪問到本頁面中所有其他物件。

3.jsp四大作用域

1)如果把變數放到pageContext裡,就說明它的作用域是page,它的有效範圍只在當前jsp頁面裡。 從把變數放到pageContext開始,到jsp頁面結束,你都可以使用這個變數。

2)如果把變數放到request裡,就說明它的作用域是request,它的有效範圍是當前請求週期。所謂請求週期,就是指從http請求發起,到伺服器處理結束,返回響應的整個過程。在這個過程中可能使用forward的方式跳轉了多個jsp頁面,在這些頁面裡你都可以使用這個變數。

3)如果把變數放到session裡,就說明它的作用域是session,它的有效範圍是當前會話。只要使用者不關瀏覽器,伺服器就有辦法知道這些請求是一個人發起的,整個過程被稱為一個會話。

4)如果把變數放到application裡,就說明它的作用域是application,它的有效範圍是整個應用。application作用域裡的變數,它們的存活時間是最長的,如果不進行手工刪除,它們就一直可以使用。與上述三個不同的是,application裡的變數可以被所有使用者共用。

3.常見問題

1.jsp連線db及curd操作 2.jsp頁面之間的引用及變數作用域

4.編碼實戰

5.擴充套件思考

1.JSP與HTML的區別

1) HTML能直接開啟,jsp只能釋出到Tomact等伺服器上才能開啟 。 2) 定義上HTML頁面是靜態頁面可以直接執行,JSP頁面是動態頁它執行時需要轉換成servlet。 3) 他們的表頭不同,這個是JSP的頭“ <%@ page language=”java” import=”java.util.*” pageEncoding=”gbk”%>”在表頭中有編碼格式和匯入包等。 4) jsp中用<%%>就可以寫Java程式碼了,而html沒有<%%>。

2.為什麼一般不建議在jsp中寫java程式碼?

1) 可讀性很差,<% ..%>將java程式碼和html都寫在一起,並且還要尖括號的表示式,看起來很複雜難懂。 2) jsp難於除錯,不能進行單元測試,不能進行debug,可維護性差。 3) jsp內寫java程式碼,安全性低,程式碼都在jsp中可以被看到。

3.jsp中的<%@include…@%>和tiles有什麼區別?

如果我們一個網站的佈局基本一致,這個時候,我們最好定義一個模板,如layout.jsp包括header,footer,content;content下面又包含其他頁面部分,如果我們不使用tiles,則在每個頁面按位置 用include引入相關的頁面,當頁面佈局發生改變的時候,我們去掉不需要的一部分,這個時候需要到每個頁面上去刪除相應的include語句;但如果我們採用tiles的話,就只需要更改layout.jsp就行了。

tiles為了規範網站佈局,通過複用基礎模板,其他頁面繼承基礎模板這個機制,當有成千上萬的頁面的時候,tiles框架的頁面管理機制使佈局維護更簡單。

6.參考文獻

7.更多討論

1.JSP和servlet區別

jsp是先部署後編譯,而servlet是先編譯後部署。

2.JSP的缺點

(1)增大了伺服器的壓力。 (2)過於依賴java執行環境。 (3)複用較低。

3.EL表示式可以用在ajax中嗎?

不能,EL表示式只能用在jsp頁面中。