JSP腳本與指令元素

引言:
       當需要在遊覽器上動態的輸出網頁內容時 例如:“在瀏覽器上動態輸出當前日期”,顯然無法通過靜態HTML完成這個效果,這時JSP的出現補充了這一功能。

一、JSP頁面基本構成:

1、JSP概述:

JSP(Java Server Pages)是指:在HTML中嵌入Java腳本語言由應用服務器中的JSP引擎來編譯和執行嵌入的Java腳本語言命令然後將生成的整個頁面信息返回給客戶端。

例:上面所提到的 在瀏覽器上動態輸出當前日期:

<%@ page language="java" import="java.util.*" pageEncoding="GBK"%>
<html>
<head><title>輸出當前日期</title></head>
<body>
你好! 今天是
<%  java.util.Date now = new java.util.Date(); %>
<%=now %>
</body>
</html>

運行結果:
在這裏插入圖片描述
JSP和Servlet的對比:
在這裏插入圖片描述

Servlet的功能非常強大,但是:

  • 使用println()輸出HTML非常不便。
  • 對輸出HTML文檔的維護也非常不便。

JSP無需打包、部署,簡單方便,但是:

  • 將java代碼拆分成多個程序塊,不便於維護。
2、JSP執行過程:

Web容器處理JSP文件請求需要經過3個階段:

  • 翻譯階段:JSP文件會被Web容器中的JSP引擎轉換成Java源碼。
  • 編譯階段:Java源碼會被編譯成可執行的字節碼。
  • 執行階段:容器接受了客戶端的請求後,執行編譯成字節碼的JSP文件;處理完請求後,容器把生成的頁面反饋給客戶端進行顯示。
    在這裏插入圖片描述
    第一次請求之後,Web容器可以重用已經編譯好的字節碼文件。
    在這裏插入圖片描述
    注意:如果對JSP文件進行了修改,Web容器會重新對JSP文件進行翻譯和編譯 。
3、JSP頁面構成:
  • JSP代碼中包含了模版元素(HTML+Javascript +CSS)和JSP元素構成。
  • 模版元素指的是JSP引擎不處理的部分。
  • JSP元素則指的是由JSP引擎直接處理的部分,這一部分必須符合JSP語法,否則會導致編譯錯誤。

JSP頁面大致由以下構成:
在這裏插入圖片描述
這裏以顯示當前日期的JSP爲例:
在這裏插入圖片描述

二、腳本元素:

1、JSP 腳本元素是用來嵌入Java代碼的,主要用來實現頁面的動態請求。
2、JSP 腳本元素包括:
在這裏插入圖片描述
1、表達式

1、用於在執行階段

  • 對錶達式進行計算,並轉換成字符串。
  • 並將轉換後的字符串插入到Servlet輸入流中。
  • 在servlet中產生類似out.println(expression)的代碼。
  • 可以在表達式中使用預先定義的對象 (如內置對象等等)。

2、語法爲:

    <%= Expression %>

注意:不允許在表達式後面出現分號。
例:輸出計算結果

   <%=1+2+3%%>
   <%=getDate( )%>

2、小腳本
1、用於向生成servlet後的jspService()方法中插入代碼。

2、可以執行任何表達式無法完成的任務。

  • 設置響應頭部和狀態碼
  • 寫入服務器日誌
  • 更新數據庫
  • 執行包含循環,條件判斷語句的java程序

3、可以使用預定義的變量 (如內置對象)。

4、語法格式爲:

  <% Java code %>

例:
顯示請求查詢字符串:

<%
String queryData = request.getQueryString();
out.println(“Attached GET data:+ queryData);
%>

設置響應頭部:

<% response.setContentType(“text/plain”); %>

3、聲明
1、用於定義插入到Servlet類中成員變量、方法等。

  • 聲明語法中聲明的代碼出現在 _jspSevice()之外。
  • 聲明語法中不能夠直接使用內置對象。

成員變量在整個JSP頁面內都有效(與書寫位置無關),因爲JSP引擎將JSP頁面轉譯成Java文件時,將這些變量作爲類的成員變量,這些變量的內存空間直到服務器關閉才釋放。任何用戶對JSP頁面成員變量操作的結果,都會影響到其他用戶。

2、語法格式爲:

<%! 變量、方法以及內部類 %>

例:

<%!
private String randomHeading() 
{return(<H2>+ Math.random() +</H2>);}
%>
<%= randomHeading() %>

4、註釋
在JSP文件的編寫過程中,共有三種註釋方法:

  1. HTML的註釋方法:<!-- html註釋-->(可在客戶端看到源碼)
  2. JSP註釋標記:<%-- JSP註釋--%>
  3. 在JSP腳本中使用註釋:
<% //單行註釋 %> 
<%  /*多行註釋 */ %>

三、指令元素:

指令元素的作用是通過設置指令中的屬性在JSP運行時,控制JSP頁面的某些特性。
在這裏插入圖片描述

1、Page指令:

Page指令:用來設定JSP頁面的全局屬性和相關功能。

作用於整個JSP文件,可以放到JSP頁面的任何位置,但爲了便於閱讀和格式規範,通常放到JSP頁面開始的位置。

注意:一個JSP文件可以包含多個page指令,指令之間是獨立的,並且除import屬性以外,每個屬性只能定義一次,否則在JSP頁面編譯的過程中將會出現錯誤!
例:

<%@ page language="java" import="java.util.*" contentType=“text/html;charset=GBK” pageEncoding="GBK"%>

errorPage屬性

  • 指定當前頁面產生異常時的處理文件。
  • 當前頁面發生錯誤時候,由該目標文件進行異常處理,JSP容器會將處理結果發送到瀏覽器顯示。

例如,指定當前頁面出錯時,調用handleError.jsp頁面處理錯誤的格式如下:

<%@ page errorPage=“handleError.jsp”%>

isErrorPage屬性

  • isErrorPage屬性說明當前頁面是否爲異常處理頁面。
  • 如果值爲“true”,說明是異常處理頁面,能夠使用exception對象,如果爲“false”,則不是。
  • 默認爲false。
2、include指令:
  • include:指定將JSP文件轉成Servlet類時所需插入的資源,可以是文本代碼HMTL文件或JSP文件。

  • 一旦JSP文件完成編譯,資源內容就不可改變,如果發生變化,JSP引擎就會對JSP文件重新進行編譯,不同的服務器會產生不同的效果。

  • 利用include指令可以將一個服務的JSP文件拆分成不同的部分,如head.jsp、body.jsp、tail.jsp,然後在同一網站的不同JSP頁面中用include指令包含head.jsp和tail.jsp,方便對JSP頁面進行管理。

  • 格式:<%@include file=“要引入資源的地址”>

例:包含了其他三個jsp頁面。

<%@ page language="java" contentType="text/html; charset=UTF-8"
	pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Include</title>
</head>
<body>
	<%@ include file="head.jsp"%> <br/>
	<%@ include file="content.jsp"%> <br/>
	<%@ include file="copyright.jsp"%>
</body>
</html>
3、taglib指令:

taglib指令:用來自定義標籤,可以把一些需要反覆顯示的內容定義成一個標籤,從而增加代碼的重用度,並使頁面便於維護。
定義標籤的三個步驟:

  1. 定義一個標籤處理類,用於實現標籤的功能;
  2. 定義標籤庫描述文件(擴展名爲tld),對標記的相關信息進行說明;
  3. 最後在配置文件Web.xml中配置。

taglib格式:

<%@taglib uri=“uri”|tagdir=“url” prefix=“tagprefix” %>
  • uri,說明描述文件和標記庫的路徑,uri可以爲URL、絕對或相對路徑、標記庫描述文件;
  • tagdir是2.0版本中新引入的屬性,用來指明標記文件(擴展名爲tag)的位置。
  • prefix,定義了JSP頁面中要引用該標籤的前綴,用來區分多個自定義標籤,注意,前綴不可以是jsp、jspx、java、javax、sun、servlet、sunw

🆗,大致就這些了。

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