本文執行個體講述了JSP基本語句用法。分享給大家供大家參考。具體如下:
1>JSP指令
JSP指令(Directive)作用是與JSP引擎進行溝通,為JSP版面設定全域變數,聲
明類以及JSP要實現的方法和輸出內容的類型等
JSP指令在整個頁面範圍內有效,且不在用戶端產生任何輸出
格式:<%@ directivename attribute="value"%>
<%@ directivename attribute1="value1"......attributeN="valueN"%>
2>page指令
用來定義JSP頁面的全域屬性和相關功能,並由該指令和JSP引擎進行通訊
格式:<%@ page attribute1="value1",........%>
可用屬性:language import contentType session buffer autoFlush
isThreadSafe info errorPage isErrorPage extends.
一個JSP頁面可以包含多個Page指令
除了import屬性外,每個屬性只能定義一次,否則出錯
language屬性:language="指令碼語言"聲明JSP頁面中使用的指令碼語言的種類
extends="ClassName"定義JSP頁面所產生的Servlet所繼承的類,將限制JSP引
擎提供的超類
import="importList"和java的import的意思一樣,匯入包檔案
session="true|false"指定JSP頁是否參與一個Http會話
buffer="none|sizeKB"指定用戶端輸出資料流的緩衝模式,none表示不緩衝
false"當緩衝區滿時將自動重新整理,如果為false,緩衝區滿了
就會出現溢出異常
isThreadSafe="true|false"可以使用多線程
info="info_text"定義一個任意的字串,用來說明JSP說明的資訊,將直接加
入翻譯的頁面
errorPage="error_url"設定處理例外狀況事件的JSP檔案
isErrorPage="true|false"設定此頁是否為異常頁面"
contentType="type;charset=CHARSET"定義了JSP頁面相應MIME類型以及JSP頁
面的字元編碼(可以唯寫type部分)
pageEncoding="peinfo"處理中文字元通常charset=GB2312
isELIgnored="true|false"用來設定EL運算式是否被忽略
3>include指令
用來指定JSP被編譯時間所需要插入的資源,可以是文本,代碼,HTML檔案或JSP
檔案
格式:<%@ include file="URL">一旦編譯完成,資源內容就不可改變
用include指令可以將一個複雜的JSP頁面分為若干部分,如:head.jsp
body.jsp tail.jsp然後在同一網站的不同JSP頁面用include指令調用
4>taglib指令
用來自訂標籤,可以把一些需要反覆顯示的內容定義成為一個標籤,從而增
加代碼的重用度,並使頁面便於維護
步驟1定義一個標籤處理類,用來實現標籤的功能
步驟2定義標籤庫描述檔案,.tld後最 對標記相關資訊進行說明
步驟3最後設定檔web.xml
格式:<%@ taglib uri="tagligURL prefilx="tagPrefix"%>
5>Scriptlet指令碼元素
聲明用來定義變數方法 <%! int i,a,b=0;%>聲明每個語句以;結束
聲明方法<%! String getDate(){}%> (一個聲明只能在一個JSP頁面有效)
運算式格式:<%=運算式%>(運算式不能以;結尾)
<%=1+2+3%>輸出6
<%=new java.util.Date().toString()%>輸出日期
Scriptlet:以<%%>括起來的java代碼
JSP提供了很多種動作元素:
<jsp:useBean><jsp:setProperty><jsp:getProperty><jsp:fallback>
<jsp:param><jsp:include><jsp:forward><jsp:plugin>
<jsp:params><jsp:root><jsp:expression_r_r><jsp:text>
<jsp:output><jsp:declaration><jsp:scriptlet>.....20多種
<jsp:param>傳遞一個或多個參數到指定動態檔案,需要和
<jsp:include><jsp:forward><jsp:plugin>一起來使用
<jsp:param name="paramName"value="paramValue"/>
<jsp:include page="HelloWorld.html"/>
<jsp:forward>允許將當前的請求轉寄至另一個靜態檔案或JSP頁面或含有與當
前頁面相同內容的Servlet
<jsp:forward page="confirm.jsp">
<jsp:param name="user" value="aaa"/>
<jsp:param name="password" value="12345"/>
</jsp:forward>轉向confirm.jsp頁面並傳遞兩個參數user和password
<jsp:plugin>用來在用戶端瀏覽器中播放或顯示一個對象,通常為Applet或
Bean,最終根據瀏覽器版本替換為<object>或<embed>
格式:
<jsp:plugin type="bean|applet" code="objectCode"
codebase="objectCodebase" archive="archiveList"
name="componentName"align="alignment"
vspace="vspace"hspace="hspace"
height="height"width="width"
nspluginurl="url"iepluginurl="url"
jreversion="jreversion"myscript="true|false"/>
<jsp:params name="paramName"value="paramValue">
<jsp:fallback>artibute text</jsp:fallback>(當顯示Bean|Applet失敗時顯
示此字串
6>JSP的內建對象
JSP提供了一些由容器實現和管理的內建對象,在JSP頁面中可以直接使用,不
需要執行個體化,通過存取這些內建對象實現與JSP頁面的Servlet環境的互相訪問
JSP一共提供了9個內建對象:out request repnse session pageContext
application config page exception
JSP是構建在Servlet上的,JSP的每個內建對象都是與JavaServletAPI包中的類
相對象,在伺服器運行時自動產生
JSP提供給開發人員一項傳遞資料的機制,那就是利用setAttribute()和
getAttribute()方法
JSP有四種範圍:分別為Page Request Session Application
Page範圍指的是單單一頁JSP Page的範圍 離開頁面就失效
PageContext.setAttribute("Name","abc");設定屬性Name的值為abc,該值只
在本頁範圍內有效,在本頁調用(String)PageContext.getAttribute("Name")將
返回"abc"
Request範圍是指在一JSP頁面發出請求到另一個JSP網頁之間(include指
令,forward指令等..),隨後範圍就失效
Request.setAttribute()和Request.getAttribute()
Session範圍為一段使用者持續和伺服器所串連的時間,但與伺服器斷線後,屬性
就失效
Application的作用範圍在伺服器運行一開始執行服務就生效,直到伺服器關閉
為止
以上四種內建對象可以使用的儲存和取得屬性的方法:
void setAttribute(String name,Object value) 設定name屬性的值為value
Enumeration getAttributeNamesInscope(int scope)取得所有scope範圍屬性
Object getAttribute(String name) 取得name屬性的值
void removeAttribute(String name) 移除name屬性的值
備忘:pageContext並無getAttributeNames()方法。
out對象被封裝在javax.servlet.jsp.JspWriter介面,可以通過out對象對緩衝
區進行操作
通常通過pageContext.getOut()方法獲得out對象
常用方法:public abstract void print()
public abstract void println()
public abstract void newLine()//輸出一個分行符號
public abstract void close()//關閉輸出資料流
public abstract void clearBuffer()//清除緩衝區內容,並將資料
發送至用戶端
public abstract void clear()//清除緩衝區內容,不將資料發送至
用戶端
public int getBufferSize()//擷取緩衝區的大小
public abstract int getRemaining()//獲得緩衝區剩餘空間的大小
public abstract void flush()//輸出緩衝區的資料
public boolean is AutoFlush()//擷取AutoFlush的取值
request對象封裝了使用者所提交的資訊,被封裝在
javax.servlet.http.HttpServletRequest介面
方法有四大類:
1.存取屬性的方法:
Object getAttribute(String)
Enumeration getAttributeNames(int)
void setAttribute(String,Object)
2.取得Request本身參數的方法:
String getParameter(String)取得指定參數名稱
Enumeration getParameterNames()取得所有參數名稱
String[]getParameterNames(String name)取得所有name的參數值
Map getParameterMap()取得一個要求參數的Map
3.能夠取得請求HTTP標題的方法:
String getHeader(String name) 取得name的標題
Enumeration getHeaderNames() 取得所有的標題名稱
Enumeration getHeaders(String name) 取得所有name的標題
int getIntHeader(String name) 取得整數類型name的標題
long getDateHeader(String name)取得日期類型name的標題
Cookie[] getCookies()取得與請求有關的cookies
4.其他方法:
String getContextPath()取得Context路徑
String getMethod()取得Http方法(Get|Post)
String getServletPath()擷取接受客戶提交資訊的頁面
String getProtocol()取得使用的協議(Http/1.1 Http/1.0)
String getQueryString() 取得請求的參數字串(Http方法必須為GET)
String getRequestedSessionId()取得使用者端的Session ID
String getRequestURI() 取得請求URL,不包括請求的參數字串
String getRemoteAddr() 取得使用者的IP地址
String getRemoteHost()取得使用者的主機名稱
int getRemotePort()取得使用者的主機連接埠
String getRemoteUser()取得使用者的名稱
void setCharacterEncoding(String encoding)設定編碼格式,用來解決表單傳遞
中文的問題
response對象:是封裝JSP處理資料後產生的結果,封裝在
javax.servlet.http.HttpServletResponse介面
void addCookie(Cookie cookie)新增cookie
void addDateHeader(String name,long date)新增long類型的值到name標題
void addHeader(String name,String value)新增String類型的值到name標題
void addIntHeader(String name,int value)新增int類型的值到name標題
void setDateHeader(String name,long date)指定long類型的值到name標題
void setHeader(String name,String value)指定String類型的值到name標題
void setIntHeader(String name,int value)指定String類型的值到name標題
void sendError(int sc)傳遞狀態代碼
void sendError(int sc,String msg)傳遞狀態代碼和錯誤資訊
void setStatus(int sc)設定狀態代碼
String encodeRedirectURL(String url)使用sendRedirect()方法的URL予以編
碼
response.setContentType("text/htmlcharset=Big5")改語句同<%@ page
contentType="text/html;charset="Big5"%>等價
cookie技術:
Cookie使網站跟蹤特定訪問者的訪問次數,最後訪問時間,訪問者進入網站的路
徑
Cookie告訴線上廣告商廣告被點擊的次數
Cookie能協助網站統計使用者設定檔以實現各種各樣的個人化服務
建立Cookie
Cookie demoCookie=new Cookie("CookieName","Cookiue")
Cookie中的get方法:
String getComment()返回cookie中的注釋
String getDomain()返回cookie中Cookie的網域名稱,網域名稱以點開始(.yesky.com)
int getMaxAge()返回Cookie到期之前的最大時間,以秒計算
String getName()返回Cookie的名字
String getPath()返回Cookie適用的路徑,如果不指定,Cookie將返回給當前頁
面所在目錄及其子目錄下的所有頁面
boolean getSecure()如果瀏覽器通過安全性通訊協定發送cookies將返回true,使用標
准協議將返回false
String getValue()返回Cookie的值
int getVersion()返回Cookie的協議版本
Cookie中的set方法:
void setComment(String purpose)
void setDomain(String pattern)
void setMaxAge(int expiry)
void setPath(String uri)
void setSecure(boolean flag)
void setValue(String newValue)
void setVersion(int v)
Cookie範例程式碼:
String sessionID=makeUniqueString(); HashMap sessionInfo=new HashMap(); HashMap globaTable=findTableStoringSessions(); globeTable.put(sessionID,sessionInfo); Cookie sessionCookie=new Cookie("JSESSION",sessionID); cookie setMaxAge(30*60);//存活時間為30分鐘 response.addCookie(cookie);//寫入客戶硬碟
session和cookie的區別:
session存放在伺服器端的記憶體裡
session隨使用者的登陸而產生,使用者下線後消失
session存放在伺服器裡,使用者不能修改,安全性好
session是一個動作狀態的持續,是一個會話
session對象,記錄每個用戶端的訪問狀態以便跟蹤每個用戶端的操作狀態,被封
裝為javax.servlet.http.HttpSession介面,可以通過pageContext.getSession()
方法擷取一個session對象
session對象中的方法:
long getCreationTime()獲得session產生的時間
String getId()獲得session的ID
long getLastAccessedTime()取得使用者最後通過這個session送出請求的時間,
單位:毫秒
long getMaxInactiveInterval()取得最大session不活動的時間,若超過這個時
間,session將會失效 單位:秒
void invalidate()取消session對象
boolean isNew()判斷session是否為新的
void setMaxInactiveInterval(int interval)設定最大session不活動的時間,
若超過這時間,session將回失效 單位:秒
application對象,負責提供應用程式在伺服器中運行時的一些全域資訊,直到服
務器關閉,被封裝在javax.servlet.SertletContext介面
int getMarorVersion()取得Container主要的Servlet API版本
ing getMinorVersion()獲得container次要的Servlet API版本
String getServerInfo()取得Container的名稱和版本
String getMimeType(String file)取得指定檔案的MIME類型
ServletContext getContext(String uripath)取得指定LOcalURL的
ApplicationContext
String getRealPath(String path)取得本地端Path絕對路徑
void log(String message)將資訊寫入log檔案中
void log(String message,Throwable throwable)將stacktrace所產生的異常
資訊寫入log檔案中
pageContent對象一般用於設定,擷取當前JSP頁面的一些屬性,也能夠存取頁面
的其他隱含對象(out,request,response,session,application等)及其所有屬性,
被封裝在javax.servlet.jsp.PageContext介面
javax.servlet.jsp.PageContext類所提供的四種範圍參數:PAGE_SCOPE
REQUEST_SCOPE SESSION_SCOPE APPLICATION_SCOPE
Exception getException()回傳目前網頁的異常,不過此網頁要為error page
JspWriter getOut()回傳目前網頁的輸出資料流,如out
Object getPage()回傳目前網頁的Servlet實體
ServletRequest getRequest()回傳目前網頁的請求
ServletResponse getResponse()回傳目前網頁的響應
ServletConfig getServletConfig()回傳目前網頁的ServletConfig對象
ServletContext getServletContext()回傳此網頁的執行環境
HttpSession getSession()回傳目前和網頁有聯絡的會話
config對象,主要作用是取得伺服器的配置資訊,被封裝在
javax.servlet.servletConfig介面,痛多pageContext.getServletConfig()方法
可以擷取一個config對象,提供存取servlet類初始化參數以及有關伺服器環境信
息的ServletContext對象
config對象的常用方法:
public String getInitParatemer(String name) 擷取伺服器指定name參數的
初始值
public Enumeration getInitParameterNames() 擷取伺服器所有初始參數的名
字
public ServletContext getServletContext()擷取Servlet的上下文
public String getServletName()擷取Servlet的伺服器名
page對象,代表JSP檔案被編譯後的Servlet類對象,實質就是Object的一個執行個體
exception對象,主要作用是顯示吟唱資訊,代表了JSP檔案運行時所產生的例外
對象,是java.lang.Throwable類的一個執行個體,只有在包含<%@ page
isErrorPage="true"%>的頁面才可以被使用,在一般的JSP頁面中使用該對象無法
編譯JSP檔案
希望本文所述對大家的JSP程式設計有所協助。