本文實例講述了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程序設計有所幫助。