java web的基礎知識:jsp相關知識
一.概述
1.1 jsp
JSP頁面由HTML和嵌入其中的Java程式碼構成的。當客戶端通過頁面發
送請求時,伺服器端就會對頁面中嵌入的Java程式碼進行編譯處理,然後生成HTML頁面重新返回給客戶端進行顯示。
可以把執行JSP頁面的執行分成兩個階段,一個是轉譯階段,一個是請求階段。
轉譯階段:JSP頁面轉換成Servlet類。
請求階段:Servlet類執行,將響應結果傳送至客戶端。
1.2jsp的宣告語句
JSP宣告語句以<%!開始,以%>結束,其語法格式為:<%! 宣告語句 %>:使用宣告語句宣告的變數為全域性變數,也就是說,當有多個使用者在執行此JSP頁面時,將共享該變數。
JSP表示式以<%=開始,以%>結束,其語法格式為:<%= Java程式碼 %>。JSP表示式中的程式碼會首先執行,然後轉換成字串並顯示到網頁上。
JSP註釋使用<%- -作為開始,以--%>作為結束,中間包含的程式碼即為註釋部分。
1.3jsp的指令
<%@ page contentType="text/html;charset=ISO-8859-1"%>:contentType屬性用來指定該JSP檔案的MIME格式,以及網頁編碼格式。
<%@ page pageEncoding=” ISO-8859-1”%>:pageEncoding屬性用來指定網頁的編碼格式。
include指令用於在JSP檔案中插入一個包含文字或程式碼的檔案,在轉換成Servlet時將指定的檔案和當前的檔案進行合併。
<jsp:include flush="true" page="hello.jsp"></jsp:include> |
—熟練使用<jsp:include>動作元素來包含檔案。
—熟練使用<jsp:forward>動作元素來實現頁面跳轉。
—熟練使用<jsp:param>動作元素來傳遞引數。
—瞭解使用<jsp: plugin >動作元素來執行Applet。
taglib指令用來宣告此JSP檔案使用了自定義標籤。
<%@ taglib uri=“http://java.sun.com/jsp/jstl/core” prefix=“c”%>
1.4jsp的9大內建物件
1.page範圍,就是指設定的屬性只在當前頁面有效。通過使用pageContext的setAttribute()方法來設定屬性,並通過pageContext的getAttribute()方法來取得屬性
2.request範圍
所謂request範圍,就是指屬性在一次請求範圍內有效。如果跳轉是指客戶端跳轉,頁面從一個頁面跳轉到另一個頁面,那麼該屬性就失效了。比如客戶單擊超連結跳轉到其他頁面,或者通過瀏覽器位址列瀏覽其他網頁。如果使用伺服器端跳轉<jsp:forward>,則該屬性仍然有效。通過使用request的setAttribute()方法來設定屬性,並通過request的getAttribute()方法來取得屬性。
3.response物件用來給客戶端傳送輸出資訊。
4.out物件用來向網頁輸出資訊。
5.session物件用來表示使用者的會話狀況,一般用於儲存使用者的各種資訊,直到生命週期超時或者被認為釋放掉為止。
6.application物件用來取得和設定Servlet的相關資訊。application物件的生命週期是從伺服器啟動產生直到伺服器關閉為止,在此期間所有的使用者會共享這一個Application物件。該物件只可以由伺服器來建立和清除,而使用者不可以對其進行建立和清除操作。
7.pageContext 物件的作用是取得任何範圍的引數,通過它可以獲取 JSP頁面的out、request、reponse、session、application 等物件。
8.config 物件是javax.servlet.ServletConfig類的例項物件。主要作用是取得伺服器的配置資訊。
9.exception 物件的作用是顯示異常資訊,只有在包含 isERRORPage=”true” 的頁面中才可以被使用,在一般的JSP頁面中使用該物件將無法編譯JSP檔案。
1.5客戶端跳轉和服務端跳轉
在Servlet中實現頁面的跳轉有兩種方式:請求轉發和重定向
1.5.1 請求轉發
1.由伺服器端進行的頁面跳轉,叫請求轉發
轉發的特點:位址列不發生變化,顯示的是上一個頁面的地址
請求次數:只有1次請求
根目錄:http://localhost:8080/專案地址/,包含了專案的訪問地址,請求域中資料不會丟失
使用的方法:request.getRequestDispatcher("/地址").forward(request, response);
1.5.2重定向
由瀏覽器端進行的頁面跳轉:稱之為重定向
重定向的特點
位址列:顯示新的地址
請求次數:2次
根目錄:http://localhost:8080/ 沒有專案的名字
請求域中的資料會丟失,因為是2次請求