javascript
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 %>注意:不允許在表達式后面出現分號。
例:輸出計算結果
2、小腳本:
1、用于向生成servlet后的jspService()方法中插入代碼。
2、可以執行任何表達式無法完成的任務。
- 設置響應頭部和狀態碼
- 寫入服務器日志
- 更新數據庫
- 執行包含循環,條件判斷語句的java程序
3、可以使用預定義的變量 (如內置對象)。
4、語法格式為:
<% Java code %>例:
顯示請求查詢字符串:
設置響應頭部:
<% 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文件的編寫過程中,共有三種注釋方法:
三、指令元素:
指令元素的作用是通過設置指令中的屬性在JSP運行時,控制JSP頁面的某些特性。
1、Page指令:
Page指令:用來設定JSP頁面的全局屬性和相關功能。
作用于整個JSP文件,可以放到JSP頁面的任何位置,但為了便于閱讀和格式規范,通常放到JSP頁面開始的位置。
注意:一個JSP文件可以包含多個page指令,指令之間是獨立的,并且除import屬性以外,每個屬性只能定義一次,否則在JSP頁面編譯的過程中將會出現錯誤!
例:
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指令:用來自定義標簽,可以把一些需要反復顯示的內容定義成一個標簽,從而增加代碼的重用度,并使頁面便于維護。
定義標簽的三個步驟:
taglib格式:
<%@taglib uri=“uri”|tagdir=“url” prefix=“tagprefix” %>- uri,說明描述文件和標記庫的路徑,uri可以為URL、絕對或相對路徑、標記庫描述文件;
- tagdir是2.0版本中新引入的屬性,用來指明標記文件(擴展名為tag)的位置。
- prefix,定義了JSP頁面中要引用該標簽的前綴,用來區分多個自定義標簽,注意,前綴不可以是jsp、jspx、java、javax、sun、servlet、sunw
🆗,大致就這些了。
總結
以上是生活随笔為你收集整理的JSP脚本与指令元素的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Java web—Servlet过滤器(
- 下一篇: JSP作用域与特殊对象