1. 程式人生 > 實用技巧 >JSP學習2

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();