JSP內置(動作)標籤

一. JSP標籤

1. 簡介

(1) 雖然我們希望JSP頁面僅用作數據顯示模塊,不要嵌套任何Java代碼引入任何業務邏輯,但

在實際開發中不引入一點業務邏輯是不可能的,但引入業務邏輯會導致頁面出現難看java代碼,如何解決?

(2) Sun公司允許用戶開發自定義標籤封裝頁面的Java代碼,以便JSP頁面不出現一行Java代碼。當然Sun公司在

JSP頁面中也內置了一些標籤(這些標籤叫做JSP標籤/動作),開發人員使用這些標籤可以完成頁面的一些常用業務

邏輯。

(3) JSP標籤也稱之爲JSP Action(JSP動作)元素,它用於在JSP頁面中提供業務邏輯功能。

2. JSP標籤的作用

(1) JSP標籤的作用:用於替換JSP腳本。

(2) 腳本可以完成以下內容:

① 流程判斷(if ,for循環);

② 跳轉頁面(轉發,重定向);

3. JSP標籤的分類

(1) 內置標籤(動作標籤):不需要在JSP頁面導入標籤。

(2) JSTL標籤(外置標籤)需要在JSP頁面中導入標籤。

(3) 自定義標籤:開發者自行定義,需要在JSP頁面導入標籤。

二. JSP動作標籤

1. <jsp:include>標籤

(1) <jsp:include>標籤是包含標籤,用於把另外一個資源的輸出內容插入進當前JSP頁面的輸出內容之中,

這種在JSP頁面執行時的引入方式稱之爲動態引入

(2) 語法:<jsp:include page="relativeURL | <%=expression%>" flush="true|false" />

① page屬性用於指定被引入資源的相對路徑,它也可以通過執行一個表達式來獲得。

② flush屬性指定在插入其他資源的輸出內容時,是否先將當前JSP頁面的已輸出的內容刷新到客戶端,默認爲

false。

(3) <jsp:include>動作標籤與include指令的區別

① 語法不同:

靜態包含語法:<%@inclue file="被包含的頁面"%>使用file屬性指定被引入資源;

動態包含語法:<jsp:include page="被包含的頁面">使用page屬性指定被引入資源;

② 參數傳遞不同

靜態包含不能向被包含頁面傳遞參數,因爲文件的寫法是不能帶參數的;

動態包含可以向被包含頁面傳遞參數;

③ 原理不同

靜態包含:先合併再翻譯;include指令是靜態引入,涉及到的2個JSP頁面會被翻譯成一個servlet,其內容是在

源文件級別進行合併

動態包含:先翻譯再合併;<jsp:include>標籤涉及到的2個JSP頁面會被翻譯成2個servlet,這2個servlet的內容

執行時進行合併。 

(4) 注意事項:

① 不管是<jsp:include>標籤,還是include指令,它們都會把兩個JSP頁面內容合併輸出,所以這兩個頁面不要

出現重複的HTML全局架構標籤,否則輸出給客戶端的內容將會是一個格式混亂的HTML文檔。

② <jsp:include>原理:包含與被包含的頁面先各自翻譯成java源文件,然後在運行時合併在一起。(先翻譯再

合併),是動態包含;而指令是先合併再翻譯。

2. <jsp:forward>標籤

(1) <jsp:forward>標籤是轉發標籤,用於把請求轉發給另外一個資源。

(2) 語法:<jsp:forward page="relativeURL | <%=expression%>" />。

page屬性用於指定請求轉發到的資源的相對路徑,它也可以通過執行一個表達式來獲得。

3. <jsp:param>標籤

(1) <jsp:param>標籤是參數標籤,當使用<jsp:include>和<jsp:forward>標籤引入或將請求轉發給其它資源

時,可以使用<jsp:param>標籤向這個資源傳遞參數。 

(2)語法:

①語法一:

<jsp:include page="relativeURL | <%=expression%>">
	<jsp:param name="parameterName" value="parameterValue|<%= expression %>" />
</jsp:include>

②語法二:

<jsp:forward page="relativeURL | <%=expression%>">
	<jsp:param name="parameterName" value="parameterValue|<%= expression %>" />
</jsp:include>

(3) 注意事項:

<jsp:param>標籤的name屬性用於指定參數名,value屬性用於指定參數值。在<jsp:include>和

<jsp:forward>標籤中可以使用多個<jsp:param>標籤來傳遞多個參數。 

4.實例

(1) action.jsp

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head> 
    <title>動作標籤</title>  
  </head>
  
  <body>
    <%--轉發 --%>
    <%
    	//request.getRequestDispatcher("/09.action2.jsp?name=eric").forward(request,response);
     %>
    <%-- 參數 --%> 
    <jsp:forward page="/09.action2.jsp">
    	<jsp:param value="jacky" name="name"/>
    	<jsp:param value="123456" name="password"/>
    </jsp:forward>
  </body>
</html>

(2) action1.jsp

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head> 
    <title>動作標籤</title>  
  </head>
  
  <body>
    <%--包含 --%>
   <jsp:include page="/common/header.jsp">
   		<jsp:param value="lucy" name="name"/>
   	</jsp:include>
   <%--	<%@include file="common/header.jsp" %>  --%>
      主頁的內容
  </body>
</html>

(3) action2.jsp

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head> 
    <title>動作標籤</title>  
  </head>
  
  <body>
    <%=request.getParameter("name")%><br/>
    <%=request.getParameter("password")%>
  </body>
</html>

(4) 運行結果








發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章