JSP學習(一)
<%! 變量、方法和類的聲明區(Declarations)%>
再此聲明的變量、方法和類都會被保留為唯一的一份,直到jsp程序停止執行為止,也就是說所有的請求服務都共用這一份,信息同時被分享。
<%@ page language="java" contentType="text/html; charset=BIG5" pageEncoding="BIG5"%>
<!-- 聲明區域 -->
<%!
int i=0;
//輸出
void print()
{
System.out.println(i);
}
%>
<!-- 調用區域 -->
<%----%>
<%
out.println(i);
print();
%>
<% 程序代碼區(Scriptlets)%>
<%=輸出表達式(Expressions)%>
必須是字符串或執行的結果可以被轉為字符串類型。
<!--注解區(Comments)-->
<%--注解區(Comments)--%>
<%//注解區(Comments)%>
<% /*注解區(Comments)*/%>
跳脫字符(Escape)
‘ => \’
“ => \”
\ =>\\
<% => <\%
%> => %\>
2. 編譯指令(Directives)
JSP程序有三種編譯指令:page\include和taglib編譯指令會改變jsp程序轉換成servlet程序代碼的結果
<%@ 編譯指令 屬性 “屬性值”%>
屬性的設定可以多個,但是除了import其它屬性不能設置多個,否則不會有任何輸出結果
Info=”infoText”
errorPage=”errorPageURL”
isErrorPage=”true|false”
用來設定jsp程序是否做為傳回錯誤信息的網頁,默認值為“false”
contentType=”contentTypeinfo”
這個屬性是用來設定傳回網頁的文件格式於編碼方式,默認值是”test/html;charset=8859_
Include編譯指令
Include編譯指令是用來將所指定的jsp程序或網頁內容嵌入jsp程序內
<%@ include file=”fileURLSpec”%>
Taglib編譯指令
Taglib編譯指令用來延伸jsp程序的操作指令(Action)
<%@ tablib url=”taglibrary” prefix=”prefix”%>
url屬性用來指定標簽定義庫的存放地址
prefix屬性用來定義標簽地前置字符串,以於默認地標簽做分別
3.操作指令(Actions)
操作指令和編譯指令不同地是,操作指令是在客戶端請求時期動態被執行地,每次有客戶端請求時,客能都會被重新執行一次,而編譯指令是在轉換時期既被執行它只是會被編譯一次
3.1 Jsp:useBean操作指令
<jsp:useBean id=”name” scope=”page|request|session|application” typespec/>
<jsp:useBean id=”name” scope=”page|request|session|application” typespec>
Body
</jsp:usebean>
Id 屬性用來設定Bean的名稱
Scope屬性用來設定bean的生命周期
Class 屬性用來設定bean的類類型
3.2 Jsp:setProperty操作指令
<jsp:SetProperty name=”beanname” propertyExpr/>
propertyExpr=property=”*”
|property=”propertyname”
|PROPERTY=”propertyname” value=”propertyvalue”
| PROPERTY=”propertyname” param=”parametername”
<Jsp:setProperty>是用來於<jsp:useBean>一起使用的
3.3 Jsp:getProperty操作指令
<jsp:getProperty name=”BeanName” Property=”PropertyName”>
<jsp:getProperty>是用來搭配<jsp:useBean一起使用的>
Name 屬性用來指定bean的名稱,切指定的bean必須存在
Property 屬性用來指定要讀取的屬性名稱,PropertyName必須是bean的屬性值
3.4 jsp:include 操作指令
<jsp:include page=”URLSpec” flush=”true”/>
Page用來指定要嵌入的html頁面或者是jsp程序頁面
Flush是指是否要將結果立即傾印出來,值必須設定為true。
3.5 jsp:forward操作指令
<jsp:forward page=”URLSpec”/>
<jsp:forward page=”URLSpec” flush=”true”/>
Jsp:forward 操作指令可以包含<jsp:param>來設定這個page需要用到的參數和它的值。
在page中可以用request.getParameter(“ParameterName”);來取得它得值。
<jsp:foward>和<jsp:include>區別:
Forward處理完畢會直接返回客戶端,但是include仍然會繼續執行完原有的jsp程序。
3.6 <jsp:param>操作
<jsp:param>操作提供了名稱、值信息,我們已經在<jsp:include>和<jsp:forward>操作中使用它。
它還可以用於<jsp:plugin>操作。在於上述對象一起使用的時候,包含的頁面或者轉發的頁面將看到新參數增加的原始request對象。
<jsp:param>操作的語法。
<jsp:param name=”name” value=”value”/>
Name:參數名稱
Value:參數值
3.7 <jsp:plugin>操作
<jsp:plugin>操作支持生成在jsp頁面中包含java小程序的html。
<jsp:plugin>的基本語法
<jsp:plugin
Type=”bcan|applet”
Code=”classFild”
Codebase=”objectCodeBase”
Align=”alignment”
Archive=”archivelist”
Height=”height”
Hspace=”hspace”
Jrevision=”jrevision”
Name=”componentName”
Vspace=”vspace”
Width=”width”
Napluginurl=”url”
<jsp:params name=”paramname” value=”paramvalue”/>
<jsp:fallback>anyatbitraryText</jsp:fallback>
</jsp:plugin>
4.標記庫:
標記庫可以簡化頁面的操作,
標記庫的元素:
n 自定義操作的定義
n Taglib指令
n 標記庫描述符
n 標記處理程序
標記庫的格式
自定義標記包括兩種可能的格式:
<prefix:tagName [attr=”value”]*>tagbody</prefix:tagName>
<prefix: tagName[attr=”value”]*/> or
<prefix: tagName[attr=”value”]*></prefix:tagName>
第一種格式是包含標記主體的操作,主體包括開始標記和結束標記之間的所有的文本。第二種沒有主體操作。可以使用一個緊跟結束標記的開始標記。
4.1 taglib指令
JSP頁面的taglib指令通知JSP容器,這個jsp頁面使用了一個由URL唯一標識的標記庫,並且關聯一個前綴,該前綴區分了庫中使用的操作。
Taglib指令的語法:
<%@ taglib url=”url to tag library” prefix=”tag prefix”%>
url指定了標記庫中的位置
4.2 標記庫描述符
標記庫描述符(Tag Library Descriptor,TLD)是一個描述標記庫的可擴展標記語言(Extensible Markup Language,XML)文檔。