JSP學習2
include指令和include動作的區別如下:
1、include指令是把其他頁面的Java程式碼(原始碼)載入進來,跟本頁面的程式碼合併在一起,相當於把原始碼從原頁面複製到本頁面來,然後再編譯。由於本頁面在編譯時已經包含了別的檔案的原始碼,所以以後其他頁面更改時,本頁面並不理會,因為已經編譯過了。<%@include file="..." %> 編譯時包含 靜態 JSP引擎將對所包含的檔案進行語法分析。
2、include動作是指兩個頁面的程式碼執行完以後,再把包含的那個頁面執行後的HTML結果頁面,加到本頁面執行後的HTML結果頁面中來,所以是執行時包含,並且還可以傳遞引數給被包含的頁面。
<jsp:include page="" /> 執行時包含 靜態和動態 JSP引擎將不對所包含的檔案進行語法分析。
<jsp:forward>
<jsp:forward>用於在伺服器端結束當前頁面的執行,並從當前頁面跳轉到其他指定頁面,轉向的目標頁面可以是靜態的HTML頁面、JSP檔案或Servlet類。這個元素的使用語法和<jsp:include>類似。
<jsp:forward>既可以帶引數,也可以不帶引數。
<jsp:forward>操作典型的使用就是登入,如進行許可權驗證的頁面。當驗證通過後,就把頁面forward到登入成功頁面;當驗證不通過時,就把頁面forward到登陸頁面。
<jsp:param>
主要用來傳遞引數給JSP程式。<jsp:param name="user" value="<%=name%>"/> 接收:<%=request.getParameter("user")%>
使用<jsp:param>元素來傳遞引數,在JSP程式中則是通過如下的程式程式碼來取得此引數的值,這與取得使用者輸入資料的方式相同,是通過使用預設物件request的getParameter()方法來取得<jsp:param>所設定的引數值。request.getParameter("attributeName");
<jsp:param>操作元素的使用必須配合<jsp:include>、<jsp:forward>及<jsp:plugin>等元素,在載入外部程式或是網頁轉換的時候,傳遞一個引數給另一個JSP程式。
JSP內建物件
request、response、application、session、out、config、pageContext、page、exception。
request讓伺服器取得使用者在網頁表單所輸入的資料內容。
response則提供服務端程式響應客戶端資訊所需要的功能。
session和application物件基本上用於記錄和處理JSP網頁之間的共享資料。
config包含JSP網頁檔案被編譯稱為servlet之後的相關資訊。
pageContext則是提供系統執行期間各種資訊內容的存取操作功能。
page代表目前正在執行的JSP網頁物件。
exception為JSP提供用於處理程式執行錯誤的異常物件。
response
setHeader可以設定HTTP應答報文的首部欄位和值;利用setHeader()方法可以設定頁面的自動重新整理。
例如:
response.setHeader("Refresh","5");//5秒鐘後自動重新整理本頁面
response.setHeader("Refresh","5;URl=http://www.163.com");//5秒鐘後自動跳轉到新頁面。
<%@page language="java" contentType="text/html;charset=gb2312" import="java.util.*"%> <HTML> <HEAD> <TITLE>response應用例項</TITLE> </HEAD> <BODY> <% out.println("當前時間為:" + new Date().toLocaleString() + "<br>"); //獲得當前時間 out.print("此刻抽取的幸運數字是:" + (int) (Math.random() * 10000)); response.setHeader("refresh", "1"); //設定每1秒重新整理一次重新整理 %> </BODY> </HTML>
1、response.sendredirect()會在客戶端呈現跳轉後的URL地址,這種跳轉稱為客戶端跳轉。使用response.sendredirect()方法將重定向的URL傳送到客戶端,瀏覽器再根據這個URL重新發起請求。所以用這個方法時,在瀏覽器位址列會看到新的請求資源的地址。並且這時的request和reponse都與第一次的不一樣了,因為產生了新的request和reponse。
2、使用<jsp:forward>完全是在伺服器上進行,瀏覽器位址列中的地址保持不變,這種跳轉稱為服務端跳轉。沒有產生新的request和reponse,保持不變,在同一個請求內可以用request來傳遞引數。
3、response.sendredirect()方法想帶引數的話,在地址中寫成xxx.jsp?param1=aaa&這種形式傳遞引數。<jsp:forward>能夠使用<jsp:param />標籤向目標檔案傳遞引數和值,目標檔案必須是一個動態的檔案,能夠處理引數。
3、<jsp:forward />後面的語句不會繼續執行,也不會繼續傳送到客戶端;response.sendredirect()方法後面的語句會繼續執行,除非語句前有return。
建立session變數
在JSP中不需要特別設定程式程式碼來建立使用者session,當程式使用了session物件時,便會自動建立session。
session.setAttribute("變數名稱",變數內容)
變數內容可為字串或者其他物件型別,接著再來看看如何使用這個方法在session中設定變數資料:
<%
session.setAttribute("id",“編號”); //設定字串
session.setAttribute("expire",new Date(86400*10));//設定日期
session.setAttribute("level",new Integer(3)); //設定整數
%>
在session中設定了變數資料後,在其他各個網頁中便可以使用getValue讀取其中的內容,此方法所返回的資料型別為物件(Object)型別。
獲取:
session.getAttribute(“變數名稱”);
返回所有session中的變數名稱
session.getAttributeNames();
清除session中的變數
session.removeAttribute("變數名稱");
結束session
session.invalidate();