Java Server Pages(JSP)
JSP文件是java服務器端的頁面,即可以定義html標籤,也可以定義Java代碼,用於實現動態的網頁開發。JSP文件在服務器中需要編譯成class字節碼文件才能被解析,所以需要將JSP文件先轉爲Java文件。因爲轉換後的Java文件下定義的是表示JSP文件的類xxx_jsp,而xxx_jsp類繼承自org.apache.jasper.runtime.HttpJspBase類,又因爲HttpJspBase類是繼承自HttpServlet類的,所以JSP文件實質上是一個Servlet。
<!-- JSP頁面的基本格式 -->
<html>
<head>
<title>JSP頁面</title>
</head>
<body>
<h1>Hello World!</h1>
<%
System.out.println("Hello World!");
%>
</body>
</html>
JSP文件的圖示處理方式:
JSP文件處理的具體方式:
- 客戶端瀏覽器向服務器發送一個請求
- 服務器識別出JSP頁面的請求,並且將請求傳遞給JSP引擎
- JSP引擎將JSP文件裏的所有JSP元素轉爲Java代碼(Servlet)
- JSP引擎將該Java代碼編譯成可執行類,並將請求傳遞給Servlet引擎
- 服務器調用Servlet引擎,然後載入並執行Servlet類。在執行過程中Servlet產生 HTML格式的輸出,並將其內嵌於HTTP的response中上傳給服務器
- 服務器以靜態HTML網頁的形式將response返回到客戶端瀏覽器中
JSP腳本:定義Java代碼的形式
- <% [code] %> :定義的Java代碼在Servlet類中的service方法中(一般用於定義執行特定內容的方法)
- <%! [code] %> :定義的Java代碼在Servlet類中的成員位置(一般用於定義成員變量)
- <%= [code] %> :定義的Java代碼輸出到頁面上(一般用於定義指定內容的輸出)
- <%@ page name = value%> :定義網頁的依賴屬性name(腳本語言、緩存需求)
- <%@ include file = path %> :包含其他文件(路徑爲一個相對的url地址path)
- <%@ taglib uri = path prefix = value %> :引入標籤庫的定義(path爲標籤庫的位置,prefix指定標籤庫的前綴)
JSP的九個內置對象(隱含對象)
對象 | 描述 |
---|---|
request | HttpServletRequest類的實例,客戶端請求一個JSP頁面的時候,JSP引擎就會創建一個新的request對象來代表這個請求 |
response | HttpServletResponse類的實例,JSP引擎還會創建一個新的response對象來進行請求的響應 |
out | JspWriter類的實例,用來在response對象中寫入內容並響應到頁面中(按照順序寫入內容) |
session | HttpSession類的實例,用來在服務器中存儲客戶端中的相關信息 |
application | ServletContext類的實例 |
config | ServletConfig類的實例 |
pageContext | PageContext類的實例,主要用來訪問頁面信息 |
page | 頁面實例的引用,相當於Java代碼中的this關鍵字 |
Exception | Exception類的對象,代表JSP頁面發生錯誤的異常對象 |