一、page指令
page指令是最常用的指令,用來說明JSP頁面的屬性等。JSP指令的多個屬性可以寫在一個page指令裡,也可以寫在多個指令裡。但需要注意的是,無論在哪個page指令裡的屬性,任何page允許的屬性都只能出現一次,否則會出現編譯錯誤。import屬性除外,可以出現多次。屬性名稱區分大小寫。
客戶端浏覽器根據該屬性判斷文檔類型,例如:
HTML格式為text/html
純文本格式為text/plain
JPG圖像為image/jpeg
GIF圖像為image/gif
WORD文檔為application/msword
info 任意字符串 指明JSP的信息。該信息可以通過Servlet.getServletInfo()方法獲取到。 trimDirectiveWhitespaces true,false 是否去掉指令前後的空白字符。默認為false。trimDirectiveWhitespaces=“false”(默認為false)時HTML代碼效果圖:
trimDirectiveWhitespaces=“true”時HTML代碼效果圖:
注意:在HTML文件中,空行是不影響顯示效果的。但如果輸出的是XML文件,則可能有問題,因為某些XML解析器不允許XML文件前面有空行。
二、include指令
1.重點說明
include指令只有一種格式:<%@ include file="relativeURL"%>。relativeURL為本應用程序內另一個JSP文件或者HTML文件的路徑。include指令用來實現JSP頁面的的區塊化。
2.代碼實踐和效果圖
Head.jsp(導航欄內容)
1 <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> 2 3 4 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> 5 <html> 6 <head> 7 8 9 <title>My JSP 'Head.jsp' starting page</title> 10 11 <meta http-equiv="pragma" content="no-cache"> 12 <meta http-equiv="cache-control" content="no-cache"> 13 <meta http-equiv="expires" content="0"> 14 <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"> 15 <meta http-equiv="description" content="This is my page"> 16 <!-- 17 <link rel="stylesheet" type="text/css" href="styles.css"> 18 --> 19 20 </head> 21 22 <body> 23 <table width="100%" cellspacing=1 bgcolor=#999999> 24 <tr> 25 <td bgcolor=#666666 colspan="7" 26 > 27 Hello World 28 </td> 29 </tr> 30 <tr> 31 <td bgcolor=#DDDDDD align="center">首頁</td> 32 <td bgcolor=#DDDDDD align="center">百科</td> 33 <td bgcolor=#DDDDDD align="center">文檔</td> 34 <td bgcolor=#DDDDDD align="center">下載</td> 35 <td bgcolor=#DDDDDD align="center">關於</td> 36 <td bgcolor=#DDDDDD align="center">郵件</td> 37 <td bgcolor=#DDDDDD align="center">社區</td> 38 </tr> 39 </table> 40 </body> 41 </html>
Foot.jsp(版權內容)
1 <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> 2 3 4 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> 5 <html> 6 <head> 7 8 9 10 11 <meta http-equiv="pragma" content="no-cache"> 12 <meta http-equiv="cache-control" content="no-cache"> 13 <meta http-equiv="expires" content="0"> 14 <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"> 15 <meta http-equiv="description" content="This is my page"> 16 <!-- 17 <link rel="stylesheet" type="text/css" href="styles.css"> 18 --> 19 20 </head> 21 22 <body> 23 <table width="100%" cellspacing=1 bgcolor=#CCCCCC> 24 <tr> 25 <td align="center" bgcolor=#666666 > 26 Copyright 2015-2016 ©King 27 </td> 28 </tr> 29 </table> 30 </body> 31 </html>
Include.jsp
1 <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> 2 <%@ page trimDirectiveWhitespaces="true" %><!-- 是否去掉指令前後的空白字符。默認為false --> 3 <% 4 String path = request.getContextPath(); 5 String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; 6 %> 7 8 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> 9 <html> 10 <head> 11 <base href="<%=basePath%>"> 12 13 14 <meta http-equiv="pragma" content="no-cache"> 15 <meta http-equiv="cache-control" content="no-cache"> 16 <meta http-equiv="expires" content="0"> 17 <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"> 18 <meta http-equiv="description" content="This is my page"> 19 <!-- 20 <link rel="stylesheet" type="text/css" href="styles.css"> 21 --> 22 23 </head> 24 25 <body> 26 <%@ include file="Head.jsp" %> <!--include指令 --> 27 <p >拉布拉多獵犬因原產地在加拿大的紐芬蘭與拉布拉多省而得名。 28 拉布拉多犬是一種中大型犬類,個性忠誠、大氣、憨厚、溫和、陽光、開朗、活潑,智商極高,也對人很友善, 29 是非常適合被選作經常出入公共場合的導盲犬或地鐵警犬及搜救犬和其他工作犬的狗品種, 30 跟哈士奇(西伯利亞雪撬犬)和金毛獵犬並列三大無攻擊性犬類,拉布拉多智商位列世界犬類第七。</p> 31 <%@ include file="Foot.jsp" %> <!--include指令 --> 32 </body> 33 </html>
3.include行為和include指令
JSP還提供了另一種包含文件的行為(include行為):<jsp:include page="relativeURL">命令。該命令與include指令使用方法基本一致。不同的是include指令是把Head.jsp和Foot.jsp的源代碼添加到Include.jsp中然後再編譯成一個class文件,屬於先包含後編譯。而include行為則是運行時單獨執行Head.jsp和Foot.jsp,然後把執行結果包含到Include.jsp中,屬於先運行後包含行為。
除了上面兩種方法包含文件外,還可以在web.xml中通過JSP配置來包含文件。
1 <jsp-config> 2 <jsp-property-group> 3 <include-prelude>/Head.jspf</include-prelude><!--在執行JSP之前執行的文件 --> 4 <include-coda>/Foot.jspf</include-coda><!--在執行JSP之後執行的文件 --> 5 </jsp-property-group> 6 </jsp-config>
三、taglib指令
JSP支持標簽技術。使用標簽功能能夠實現視圖代碼重用。要使用標簽功能必須先聲明標簽庫以及標簽前綴。taglib指令用來指明JSP頁面內使用的JSP標簽庫。taglib指令有兩個屬性,uri為類庫的地址,prifix為標簽的前綴。
1 <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> 2 <html> 3 <head> 4 </head> 5 <body> 6 <c:forEach var="item" items="${arrays}"> 7 <c:out value="item"></c:out> 8 </c:forEach> 9 </body> 10 </body> 11 </html>