JSP基礎–動作標籤
- 2019 年 10 月 10 日
- 筆記
JSP動作標籤
1 JSP動作標籤概述
動作標籤的作用是用來簡化Java腳本的!
JSP動作標籤是JavaWeb內置的動作標籤,它們是已經定義好的動作標籤,我們可以拿來直接使用。
如果JSP動作標籤不夠用時,還可以使用自定義標籤(今天不講)。JavaWeb一共提供了20個JSP動作標籤,但有很多基本沒有用,這裡只介紹一些有坐標的動作標籤。
JSP動作標籤的格式:<jsp:標籤名 …>
2 <jsp:include>
<jsp:include>標籤的作用是用來包含其它JSP頁面的!你可能會說,前面已經學習了include指令了,它們是否相同呢?雖然它們都是用來包含其它JSP頁面的,但它們的實現的級別是不同的!
include指令是在編譯級別完成的包含,即把當前JSP和被包含的JSP合併成一個JSP,然後再編譯成一個Servlet。
include動作標籤是在運行級別完成的包含,即當前JSP和被包含的JSP都會各自生成Servlet,然後在執行當前JSP的Servlet時完成包含另一個JSP的Servlet。它與RequestDispatcher的include()方法是相同的!
hel.jsp
<body> <h1>hel.jsp</h1> <jsp:include page="lo.jsp" /> </body> |
---|
lo.jsp
<% out.println("<h1>lo.jsp</h1>"); %> |
---|

其實<jsp:include>在「真身」中不過是一句方法調用,即調用另一個Servlet而已。
3 <jsp:forward>
forward標籤的作用是請求轉發!forward標籤的作用與RequestDispatcher#forward()方法相同。
hel.jsp
|
---|
lo.jsp
<% out.println("<h1>lo.jsp</h1>"); %> |
---|
注意,最後客戶端只能看到lo.jsp的輸出,而看不到hel.jsp的內容。也就是說在hel.jsp中的<h1>hel.jsp</h1>是不會發送到客戶端的。<jsp:forward>的作用是「別在顯示我,去顯示它吧!」。
4 <jsp:param>
還可以在<jsp:include>和<jsp:forward>標籤中使用<jsp:param>子標籤,它是用來傳遞參數的。下面用<jsp:include>來舉例說明<jsp:param>的使用。
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>a.jsp</title> </head> <body> <h1>a.jsp</h1> <hr/> <jsp:include page="/b.jsp"> <jsp:param value="zhangSan" name="username"/>[崔1] </jsp:include> </body> </html> |
---|
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>b.jsp</title> </head> <body> <h1>b.jsp</h1> <hr/> <% String username = request.getParameter("username");[崔2] out.print("你好:" + username); %> </body> </html> |
[崔1]給被包含的頁面b.jsp傳遞參數。
[崔2]獲取參數
JSP動作標籤 這些jsp的動作標籤,與html提供的標籤有本質的區別。 * 動作標籤是由tomcat(伺服器)來解釋執行!它與java程式碼一樣,都是在伺服器端執行的! * html由瀏覽器來執行! * <jsp:forward>:轉發!它與RequestDispatcher的forward方法是一樣的,一個是在Servlet中使用,一個是在jsp中使用! * <jsp:include>:包含:它與RequestDispatcher的include方法是一樣的,一個是在Servlet中使用,一個是在jsp中使用! > <%@include>和<jsp:include>有什麼不同! * <jsp:param>:它用來作為forward和include的子標籤!用來給轉發或包含的頁面傳遞參數!