javascript
JSP语法
腳本程序
腳本程序可以包含任意量的Java語(yǔ)句、變量、方法或表達(dá)式,只要它們?cè)谀_本語(yǔ)言中是有效的。
腳本程序的語(yǔ)法格式:<% 代碼片段 %>
任何文本、HTML標(biāo)簽、JSP元素必須寫在腳本程序的外面。
?
<html><head><title>HelloWorld</title></head> <body> HelloWorld!<br/> <% out.println("Your IP address is " +request.getRemoteAddr()); %> </body> </html>JSP聲明
一個(gè)聲明語(yǔ)句可以聲明一個(gè)或多個(gè)變量、方法,供后面的Java代碼使用。在JSP文件中,必須先聲明這些變量和方法然后才能使用它們。
JSP聲明的語(yǔ)法格式: <%!declaration; [ declaration; ]+ ... %>
?
<%! int i =0; %> <%! int a, b,c; %> <%! Circle a= new Circle(2.0); %>?JSP表達(dá)式
一個(gè)JSP表達(dá)式中包含的腳本語(yǔ)言表達(dá)式,先被轉(zhuǎn)化成String,然后插入到表達(dá)式出現(xiàn)的地方。
由于表達(dá)式的值會(huì)被轉(zhuǎn)化成String,所以可以在一個(gè)文本行中使用表達(dá)式而不用去管它是否是HTML標(biāo)簽。
表達(dá)式元素中可以包含任何符合Java語(yǔ)言規(guī)范的表達(dá)式,但是不能使用分號(hào)來(lái)結(jié)束表達(dá)式。
JSP表達(dá)式的語(yǔ)法格式: <%=表達(dá)式 %>
<html> <head><title>AComment Test</title></head> <body> <p>Today's date: <%= (newjava.util.Date()).toLocaleString()%> </p> </body> </html>JSP注釋
JSP注釋主要有兩個(gè)作用:為代碼作注釋以及將某段代碼注釋掉。
JSP注釋的語(yǔ)法格式:
<%-- 這里可以填寫 JSP 注釋 --%>
?
JSP 指令
JSP指令用來(lái)設(shè)置整個(gè)JSP頁(yè)面相關(guān)的屬性,如網(wǎng)頁(yè)的編碼方式和腳本語(yǔ)言。
JSP中的三種指令標(biāo)簽:
<%@ page ... %>?????? 定義網(wǎng)頁(yè)依賴屬性,比如腳本語(yǔ)言、error頁(yè)面、緩存需求等等
<%@ include ... %>?? 包含其他文件
<%@ taglib ... %>???? 引入標(biāo)簽庫(kù)的定義
Page指令
<%@ page attribute="value" %>等價(jià)的XML格式:
<jsp:directive.page attribute="value" />?
下表列出與Page指令相關(guān)的屬性:
buffer?? 指定out對(duì)象使用緩沖區(qū)的大小
autoFlush?? 控制out對(duì)象的 緩存區(qū),true/false,默認(rèn)為true
contentType????? 指定當(dāng)前JSP頁(yè)面的MIME類型和字符編碼
errorPage?? 指定當(dāng)JSP頁(yè)面發(fā)生異常時(shí)需要轉(zhuǎn)向的錯(cuò)誤處理頁(yè)面
isErrorPage 是否可以作為另一個(gè)JSP頁(yè)面的錯(cuò)誤處理頁(yè)面,true/false
extends?????? 指定servlet從哪一個(gè)類繼承
import 導(dǎo)入要使用的Java類,多個(gè)包可以用逗號(hào)分割
info????? 定義JSP頁(yè)面的描述信息,可以通過(guò)Servlet.getServletInfo()得到
isThreadSafe???? 指定對(duì)JSP頁(yè)面的訪問(wèn)是否為線程安全
language???? 定義JSP頁(yè)面所用的腳本語(yǔ)言,默認(rèn)是Java
session 指定JSP頁(yè)面是否使用session,true/false
isELIgnored 指定是否執(zhí)行EL表達(dá)式,true/false
isScriptingEnabled?? 確定腳本元素能否被使用,true/false
trimDirectiveWhitespace 是否去掉指令前后的空白字符,true/false
Include指令
JSP可以通過(guò)include指令來(lái)包含其他文件。被包含的文件可以是JSP文件、HTML文件或文本文件。包含的文件就好像是該JSP文件的一部分,會(huì)被同時(shí)編譯執(zhí)行。
Include指令的語(yǔ)法格式如下:
<%@ include file="relative url" %>
Include指令中的文件名實(shí)際上是一個(gè)相對(duì)的URL。如果沒(méi)有給文件關(guān)聯(lián)一個(gè)路徑,JSP編譯器默認(rèn)在當(dāng)前路徑下尋找。
等價(jià)的XML語(yǔ)法:
<jsp:directive.include file="relative url" />與<jsp:include page=”url”/>的區(qū)別:Include指令是先包含,再編譯,jsp:include標(biāo)簽是先運(yùn)行,再包含,就是說(shuō)前者是把包含的文件合并到一個(gè)文件,最后編譯成一個(gè)class文件;后者是兩個(gè)文件單獨(dú)執(zhí)行,然后將結(jié)果合并到一塊
?
Taglib指令
JSP API允許用戶自定義標(biāo)簽,一個(gè)自定義標(biāo)簽庫(kù)就是自定義標(biāo)簽的集合。
Taglib指令引入一個(gè)自定義標(biāo)簽集合的定義,包括庫(kù)路徑、自定義標(biāo)簽。
Taglib指令的語(yǔ)法:
<%@ taglib uri="uri" prefix="prefixOfTag" %>
uri屬性確定標(biāo)簽庫(kù)的位置,prefix屬性指定標(biāo)簽庫(kù)的前綴。
等價(jià)的XML語(yǔ)法:
<jsp:directive.taglib uri="uri" prefix="prefixOfTag" />?JSP 動(dòng)作元素
與JSP指令元素不同的是,JSP動(dòng)作元素在請(qǐng)求處理階段起作用。JSP動(dòng)作元素是用XML語(yǔ)法寫成的
動(dòng)作元素基本上都是預(yù)定義的函數(shù),JSP規(guī)范定義了一系列的標(biāo)準(zhǔn)動(dòng)作,它用JSP作為前綴,可用的標(biāo)準(zhǔn)動(dòng)作元素如下:
?
jsp:include? 在頁(yè)面被請(qǐng)求的時(shí)候引入一個(gè)文件。
jsp:useBean?????? 尋找或者實(shí)例化一個(gè)JavaBean。
jsp:setProperty 設(shè)置JavaBean的屬性。
jsp:getProperty 輸出某個(gè)JavaBean的屬性。
jsp:forward 把請(qǐng)求轉(zhuǎn)到一個(gè)新的頁(yè)面。
jsp:plugin??? 根據(jù)瀏覽器類型為Java插件生成OBJECT或EMBED標(biāo)記。
jsp:element?????? 定義動(dòng)態(tài)XML元素
jsp:attribute????? 設(shè)置動(dòng)態(tài)定義的XML元素屬性。
jsp:body????? 設(shè)置動(dòng)態(tài)定義的XML元素內(nèi)容。
jsp:text 在JSP頁(yè)面和文檔中使用寫入文本的模板
?
所有的動(dòng)作要素都有兩個(gè)屬性:id屬性和scope屬性。
?
id屬性:
id屬性是動(dòng)作元素的唯一標(biāo)識(shí),可以在JSP頁(yè)面中引用。動(dòng)作元素創(chuàng)建的id值可以通過(guò)PageContext來(lái)調(diào)用。
?
scope屬性:
該屬性用于識(shí)別動(dòng)作元素的生命周期。 id屬性和scope屬性有直接關(guān)系,scope屬性定義了相關(guān)聯(lián)id對(duì)象的壽命。 scope屬性有四個(gè)可能的值:(a) page, (b)request, (c)session, 和 (d) application。
?
<jsp:include>動(dòng)作元素
<jsp:include page="relative URL" flush="true" />以下是include動(dòng)作相關(guān)的屬性列表。
page???? 包含在頁(yè)面中的相對(duì)URL地址。
flush???? 布爾屬性,定義在包含資源前是否刷新緩存區(qū)。
<jsp:useBean>動(dòng)作元素
<jsp:useBean id="name" class="package.class" />?在類載入后,可以通過(guò)jsp:setProperty 和 jsp:getProperty 動(dòng)作來(lái)修改和檢索bean的屬性。
?
以下是useBean動(dòng)作相關(guān)的屬性列表。
?
class???? 指定Bean的完整包名。
type????? 指定將引用該對(duì)象變量的類型。
beanName? 通過(guò) java.beans.Beans 的 instantiate() 方法指定Bean的名字。
?
<jsp:useBean id="test" class="action.TestBean" /><!-- 此句可以從request域中自動(dòng)取得所有符合的屬性值--><jsp:setProperty name="test" property="*" /><jsp:setProperty name="test"property="message" value="HelloJSP..." /><p>Got message....</p><jsp:getProperty name="test" property="message" />?
<jsp:setProperty>和<jsp:getProperty>
<jsp:setProperty>的屬性列表
name??? name屬性是必需的。它表示要設(shè)置屬性的是哪個(gè)Bean。
property???? property屬性是必需的。它表示要設(shè)置哪個(gè)屬性。有一個(gè)特殊用法:如果property的值是"*",表示所有名字和Bean屬性名字匹配的請(qǐng)求參數(shù)都將被傳遞給相應(yīng)的屬性set方法。
value??? value 屬性是可選的。該屬性用來(lái)指定Bean屬性的值。字符串?dāng)?shù)據(jù)會(huì)在目標(biāo)類中通過(guò)標(biāo)準(zhǔn)的valueOf方法自動(dòng)轉(zhuǎn)換成數(shù)字、boolean、Boolean、 byte、Byte、char、Character。例如,boolean和Boolean類型的屬性值(比如"true")通過(guò) Boolean.valueOf轉(zhuǎn)換,int和Integer類型的屬性值(比如"42")通過(guò)Integer.valueOf轉(zhuǎn)換。 value和param不能同時(shí)使用,但可以使用其中任意一個(gè)。
param? param 是可選的。它指定用哪個(gè)請(qǐng)求參數(shù)作為Bean屬性的值。如果當(dāng)前請(qǐng)求沒(méi)有參數(shù),則什么事情也不做,系統(tǒng)不會(huì)把null傳遞給Bean屬性的set方法。因此,你可以讓Bean自己提供默認(rèn)屬性值,只有當(dāng)請(qǐng)求參數(shù)明確指定了新值時(shí)才修改默認(rèn)屬性值。
?
<jsp:getProperty>的屬性列表
name??? 要檢索的Bean屬性名稱。Bean必須已定義。
property???? 表示要提取Bean屬性的值
?
<jsp:forward> 和<jsp:param>
<jsp:forward page=”url”><jsp:param name=”param1” value=”value1”/><jsp:param name=”param2” value=”value2”/> </jsp:forward><jsp:directive>
<jsp:directive>與JSP指令相對(duì)應(yīng),可以互換
<jsp:directive.page/>
<jsp:directive.include/>
<jsp:directive.taglib/>
?
<jsp:element> 、 <jsp:attribute>、 <jsp:body>動(dòng)作元素
<jsp:element>、 <jsp:attribute>、 <jsp:body>動(dòng)作元素動(dòng)態(tài)定義XML元素。動(dòng)態(tài)是非常重要的,這就意味著XML元素在編譯時(shí)是動(dòng)態(tài)生成的而非靜態(tài)。
?
以下實(shí)例動(dòng)態(tài)定義了XML元素:
?
<%@page language="java" contentType="text/html"%> <html xmlns="http://www.w3c.org/1999/xhtml"xmlns:jsp="http://java.sun.com/JSP/Page"><head><title>Generate XML Element</title></head> <body> <jsp:element name="xmlElement"> <jsp:attribute name="xmlElementAttr">Value for the attribute </jsp:attribute> <jsp:body>Body for XML element </jsp:body> </jsp:element> </body> </html>執(zhí)行時(shí)生成HTML代碼如下:
?
<html xmlns="http://www.w3c.org/1999/xhtml"xmlns:jsp="http://java.sun.com/JSP/Page"><head><title>GenerateXML Element</title></head> <body> <xmlElement xmlElementAttr="Value for the attribute">Body for XML element </xmlElement> </body> </html>轉(zhuǎn)載于:https://www.cnblogs.com/duadu/p/6335872.html
總結(jié)
- 上一篇: Camera Calibration a
- 下一篇: PIL中分离通道发生“Attribute