1. 程式人生 > >JSP(3)指令碼、註釋、指令

JSP(3)指令碼、註釋、指令

【1 JSP三種指令碼元素】

(1)JSP宣告:(指令碼宣告)

宣告(declaration)用來在JSP頁面中宣告變數和定義方法。
宣告是以<%!開頭,以%>結束的標籤,其中可以包含任意數量的合法的Java宣告語句。

格式:<%!  書寫Java程式碼;  %>

下面是JSP宣告的一個例子:
<%! int count = 0; %>

(2)JSP小指令碼(指令碼片段)

小指令碼(scriptlets)是嵌入在JSP頁面中的Java程式碼段。
小指令碼是以<%開頭,以%>結束的標籤。

格式:<% Java程式碼片段 %>

例如<% count++; %>

原始碼:程式碼翻譯在_jspService方法中
指令碼片段,即使分開書寫,也能最終組合在一起

小指令碼在每次訪問頁面時都被執行,因此count變數在每次請求時都增1.由於小指令碼可以包含任何Java程式碼,所以它通常用來在JSP頁面嵌入計算邏輯。同時還可以使用小指令碼列印HTML模板文字。

(3)JSP表示式編輯(指令碼表示式)

表示式(expression)是以<%=開頭,以%>結束的標籤,它作為Java語言表示式的佔位符。
包含一個符合Java語法的表示式。表示式的元素在執行後被自動轉化為字串,然後插入到這個表示式的JSP檔案的位置顯示。因為這個表示式的值已經轉化為字串,所以能在一行文字中插入這個表示式。表示式是一個簡化的了的out.println語句。可以將資料輸出到頁面
在頁面每次被訪問時都要計算表示式,然後將其值嵌入到HTML的輸出中。

與變數宣告不同,表示式不能以分號結束

因此下面的程式碼是非法的:
<%= count; %>
使用表示式可以向輸出流輸出任何物件或任何基本資料型別的值,也可以列印任何算術表示式、布林表示式或方法呼叫返回的值。
在JSP表示式的百分號和等號之間不能有空格



格式:<%= 表示式 %>

原始碼:程式碼翻譯在_jspService方法中,而且,被輸出流輸出

如<%= count%>

【2 jsp中的註釋】

JSP中可以寫哪些註釋?

1)html註釋

格式:

<!-- 這是HTML的註釋方式註釋,不會在瀏覽器中顯示。 -->

作用:


2)css註釋

3)java註釋

Java的註釋必須嵌入在上面介紹的三個指令碼中,不能在jsp其他位置書寫。


也稱為JSP頁面中的普通註釋:JSP頁面中的普通註釋是指以下兩種樣式的註釋方法:


    <% // 註釋內容 %> 
    <% /* 註釋內容 */ %>


 以上兩個註釋都將由瀏覽器忽略。

4)js註釋

5)jsp註釋

也稱為JSP頁面中的隱藏註釋

使用“<%--”和“--%>”建立,

它的具體形式如下所示:

<%-- 註釋內容 --%>

JSP語句中的隱藏註釋嵌入在JSP程式的原始碼中,使用隱藏註釋的目的並不是提供給使用者的,

它可以達到兩種目的:
一,是為 了程式設計和開發人員閱讀程式的方便,增強程式的可讀性。一個優秀程式設計師的良好註釋風格對於整個專案開發組以及長遠使用來說,很重要。
二,是在增強程式可讀性的同時又顧及程式系統的安全性,使用者如果通過Web瀏覽器檢視該JSP頁面,看不到隱藏註釋中註釋的內容。

註釋使用總結:


<!-- jsp作用:簡化書寫html標籤,動態的生成網頁內容(jsp中可以書寫java程式碼)演示,jsp檔案中的各種註釋 -->
 <%-- jsp檔案中註釋 :不會翻譯到 .java檔案中--%>
 <%-- html註釋,無法註釋掉java程式碼,但是,在html檔案中依然起作用 --%>
 <%-- java註釋會原封不動的翻譯到.java檔案中 --%>
 <!--11111 <% //int i = 0; %> -->
 <%-- 總結:希望在哪個型別的檔案中,看到註釋,就使用哪種型別的註釋 --%>

【3 jsp中page指令】

什麼是指令?就是一段程式碼(程式碼就一段文字)

格式為:
<%@ 指令的名字  key=value  key=value  …….%>

例子:
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>

Key:屬性名稱Value:屬性值  
Key和value值是用來設定jsp頁面(例子:<a  href=”http://www.baidu.com”></a>)

page指令的功能:對jsp頁面進行設定的指令


Page指令:
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
學習page指令(主要是學習指令中的key和value,它們是用來設定jsp的):

1】language="java"
聲明當前jsp使用的程式語言,預設值是java(它現在也只支援java)(工作的時候也是寫java)

2】import="java.util.*" 
匯入要使用的包(工作的時候,需要匯入類的時候使用)
注意jsp有部分包不用手動匯入:

3】pageEncoding="UTF-8"
設定當前jsp原始檔的編碼表(工作的時候,就使用UTF-8)

4】contentType="text/html; charset=utf-8"
設定瀏覽器解析html的編碼表,有pageEncoding的情況可以不設定
相當於:Response.setcontentType(“text/html;charset=utf-8”)  (工作的時候,不寫這個屬性)
當設定過pageEncoding="UTF-8"之後,瀏覽器解析的時候,預設使用UTF-8,所以不再重新設定編碼表。

5】errorPage="500.jsp"
設定在當前jsp頁面發生異常(int I = 1/0;)後,跳轉那個頁面(500.jsp)。(工作的時候,如果頁面有可能發生錯誤)

6】isELIgnored="true"
是否解析jsp中的EL表示式(工作的時候,一般不寫,使用預設的,預設為false解析El表示式

7】session="true"
設定在當前的頁面中是否可以直接使用session物件(工作時候一般不設定,預設為true
 
8】isErrorPage="true"
設定當前的JSP頁面(500.jsp),是否是顯示錯誤資訊頁面(500.jsp),如果是錯誤頁面可以看到錯誤的資訊(使用exception物件——jsp中的物件)
  
補充:一般開發的時候,會把整個專案中的常見的錯誤處理配置到web.xml檔案中

測試統一錯誤配置的時候,需要將jsp page指令中 errorPage屬性去掉。


<!-- 配置統一的錯誤頁面  -->
  <error-page>	
  	<!-- 伺服器的錯誤響應碼 -->
  	<error-code>500</error-code>
  	<!-- 跳轉那個頁面 -->
  	<location>/500.jsp</location>
  </error-page>

【4 jsp中include指令】

應用場景:

一個網頁,一般它的最頂部是一個頁面,而最底部是一個頁面,主體部分是另外一個頁面

<%@include file="header.jsp" %><br>
這是新聞主體<br>
<%@include file="footer.jsp" %>

使用這個include指令三個jsp檔案最終變成一個class檔案,這樣引入頁面的方式叫做靜態引入。
在執行之前,所有的程式碼已經寫在.java原始檔中

工作中:需要在當前頁面引入其他頁面,使用include指令。

【5 jsp中taglib指令】

作用:taglib指令在jsp中匯入已經定義好的標籤庫或者函式庫(與類庫(java物件,一個一個類)不是一個概念),方便程式設計師使用定義好的標籤和函式。
解釋:
將已經定義好的物件(標籤和函式),匯入到當前的jsp檔案中,讓我們可以使用。(相當於使用import關鍵字,可以匯入其他已經定義好的java類

為什麼需要標籤和函式? 
方便前端和後端開發人員學習,可以使用同一種方式,開發jsp頁面
頁面由美工維護,美工不懂java程式碼,需要在jsp頁面將java程式碼剔除,使用標籤代替java程式碼,使用這些標籤需要使用taglib指令來引入標籤庫。

工作的時候:需要用到標籤庫和函式庫,都會使用taglib指令

示例:

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%--
	prefix="c" :設定使用標籤庫或則函式庫的短名稱,取個小名
	uri="http://java.sun.com/jsp/jstl/core"  相當於 :java.util.*
	設定要匯入的標籤的全路徑,只是這個路徑,他長得像地址
 --%>

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Insert title here</title>
</head>
<body>
<c:out value="《銀河護衛隊2》"></c:out>

</body>
</html>

在taglib指令中的屬性:

uri:是當前標籤對應的Java程式碼封裝之後的名稱空間——指定了一個網址,這個網址是用來確定,我們要引入的是那個標籤庫或者函式庫
prefix(字首):它是當前在頁面上可以使用的標籤的短名稱——小名。

Taglib指令原理:本身jsp可以書寫java程式碼,html、js、java在一個原始檔上混雜一起維護不方便,所以將頁面的java程式碼抽取成java類,然後將類配置到檔案中,再在jsp頁面上匯入配置的java類,這樣就可以以標籤的方式使用定義好的java功能


1   頁面的java程式碼抽取成java類
2   將類配置到檔案中
3   jsp頁面上匯入配置的java類

標籤庫主要Jar包(jstl-impl.jar)
標籤庫主要配置檔案(xxx.tld)
配置檔案原始碼:xxx.tld