本文實例講述了JSP基本語句用法。分享給大家供大家參考。具體如下:
1>JSP指令
JSP指令(Directive)作用是與JSP引擎進行溝通,為JSP頁面設(shè)置全局變量,聲
明類以及JSP要實現(xiàn)的方法和輸出內(nèi)容的類型等
JSP指令在整個頁面范圍內(nèi)有效,且不在客戶端產(chǎn)生任何輸出
格式:%@ directivename attribute="value"%>
%@ directivename attribute1="value1"......attributeN="valueN"%>
2>page指令
用來定義JSP頁面的全局屬性和相關(guān)功能,并由該指令和JSP引擎進行通信
格式:%@ page attribute1="value1",........%>
可用屬性:language import contentType session buffer autoFlush
isThreadSafe info errorPage isErrorPage extends.
一個JSP頁面可以包含多個Page指令
除了import屬性外,每個屬性只能定義一次,否則出錯
language屬性:language="腳本語言"聲明JSP頁面中使用的腳本語言的種類
extends="ClassName"定義JSP頁面所產(chǎn)生的Servlet所繼承的類,將限制JSP引
擎提供的超類
import="importList"和java的import的意思一樣,導(dǎo)入包文件
session="true|false"指定JSP頁是否參與一個Http會話
buffer="none|sizeKB"指定客戶端輸出流的緩沖模式,none表示不緩沖
false"當(dāng)緩沖區(qū)滿時將自動刷新,如果為false,緩沖區(qū)滿了
就會出現(xiàn)溢出異常
isThreadSafe="true|false"可以使用多線程
info="info_text"定義一個任意的字符串,用來說明JSP說明的信息,將直接加
入翻譯的頁面
errorPage="error_url"設(shè)置處理異常事件的JSP文件
isErrorPage="true|false"設(shè)置此頁是否為異常頁面"
contentType="type;charset=CHARSET"定義了JSP頁面相應(yīng)MIME類型以及JSP頁
面的字符編碼(可以只寫type部分)
pageEncoding="peinfo"處理中文字符通常charset=GB2312
isELIgnored="true|false"用來設(shè)置EL表達(dá)式是否被忽略
3>include指令
用來指定JSP被編譯時所需要插入的資源,可以是文本,代碼,HTML文件或JSP
文件
格式:%@ include file="URL">一旦編譯完成,資源內(nèi)容就不可改變
用include指令可以將一個復(fù)雜的JSP頁面分為若干部分,如:head.jsp
body.jsp tail.jsp然后在同一網(wǎng)站的不同JSP頁面用include指令調(diào)用
4>taglib指令
用來自定義標(biāo)簽,可以把一些需要反復(fù)顯示的內(nèi)容定義成為一個標(biāo)簽,從而增
加代碼的重用度,并使頁面便于維護
步驟1定義一個標(biāo)簽處理類,用來實現(xiàn)標(biāo)簽的功能
步驟2定義標(biāo)簽庫描述文件,.tld后最 對標(biāo)記相關(guān)信息進行說明
步驟3最后配置文件web.xml
格式:%@ taglib uri="tagligURL prefilx="tagPrefix"%>
5>Scriptlet腳本元素
聲明用來定義變量方法 %! int i,a,b=0;%>聲明每個語句以;結(jié)束
聲明方法%! String getDate(){}%> (一個聲明只能在一個JSP頁面有效)
表達(dá)式格式:%=表達(dá)式%>(表達(dá)式不能以;結(jié)尾)
%=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>傳遞一個或多個參數(shù)到指定動態(tài)文件,需要和
jsp:include>jsp:forward>jsp:plugin>一起來使用
jsp:param name="paramName"value="paramValue"/>
jsp:include page="HelloWorld.html"/>
jsp:forward>允許將當(dāng)前的請求轉(zhuǎn)發(fā)至另一個靜態(tài)文件或JSP頁面或含有與當(dāng)
前頁面相同內(nèi)容的Servlet
jsp:forward page="confirm.jsp">
jsp:param name="user" value="aaa"/>
jsp:param name="password" value="12345"/>
/jsp:forward>轉(zhuǎn)向confirm.jsp頁面并傳遞兩個參數(shù)user和password
jsp:plugin>用來在客戶端瀏覽器中播放或顯示一個對象,通常為Applet或
Bean,最終根據(jù)瀏覽器版本替換為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>(當(dāng)顯示Bean|Applet失敗時顯
示此字符串
6>JSP的內(nèi)建對象
JSP提供了一些由容器實現(xiàn)和管理的內(nèi)建對象,在JSP頁面中可以直接使用,不
需要實例化,通過存取這些內(nèi)建對象實現(xiàn)與JSP頁面的Servlet環(huán)境的互相訪問
JSP一共提供了9個內(nèi)建對象:out request repnse session pageContext
application config page exception
JSP是構(gòu)建在Servlet上的,JSP的每個內(nèi)建對象都是與JavaServletAPI包中的類
相對象,在服務(wù)器運行時自動生成
JSP提供給開發(fā)人員一項傳遞數(shù)據(jù)的機制,那就是利用setAttribute()和
getAttribute()方法
JSP有四種范圍:分別為Page Request Session Application
Page范圍指的是單單一頁JSP Page的范圍 離開頁面就失效
PageContext.setAttribute("Name","abc");設(shè)置屬性Name的值為abc,該值只
在本頁范圍內(nèi)有效,在本頁調(diào)用(String)PageContext.getAttribute("Name")將
返回"abc"
Request范圍是指在一JSP頁面發(fā)出請求到另一個JSP網(wǎng)頁之間(include指
令,forward指令等..),隨后范圍就失效
Request.setAttribute()和Request.getAttribute()
Session范圍為一段用戶持續(xù)和服務(wù)器所連接的時間,但與服務(wù)器斷線后,屬性
就失效
Application的作用范圍在服務(wù)器運行一開始執(zhí)行服務(wù)就生效,直到服務(wù)器關(guān)閉
為止
以上四種內(nèi)建對象可以使用的存儲和取得屬性的方法:
void setAttribute(String name,Object value) 設(shè)定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對象對緩沖
區(qū)進行操作
通常通過pageContext.getOut()方法獲得out對象
常用方法:public abstract void print()
public abstract void println()
public abstract void newLine()//輸出一個換行符
public abstract void close()//關(guān)閉輸出流
public abstract void clearBuffer()//清除緩沖區(qū)內(nèi)容,并將數(shù)據(jù)
發(fā)送至客戶端
public abstract void clear()//清除緩沖區(qū)內(nèi)容,不將數(shù)據(jù)發(fā)送至
客戶端
public int getBufferSize()//獲取緩沖區(qū)的大小
public abstract int getRemaining()//獲得緩沖區(qū)剩余空間的大小
public abstract void flush()//輸出緩沖區(qū)的數(shù)據(jù)
public boolean is AutoFlush()//獲取AutoFlush的取值
request對象封裝了用戶所提交的信息,被封裝在
javax.servlet.http.HttpServletRequest接口
方法有四大類:
1.存取屬性的方法:
Object getAttribute(String)
Enumeration getAttributeNames(int)
void setAttribute(String,Object)
2.取得Request本身參數(shù)的方法:
String getParameter(String)取得指定參數(shù)名稱
Enumeration getParameterNames()取得所有參數(shù)名稱
String[]getParameterNames(String name)取得所有name的參數(shù)值
Map getParameterMap()取得一個要求參數(shù)的Map
3.能夠取得請求HTTP標(biāo)頭的方法:
String getHeader(String name) 取得name的標(biāo)頭
Enumeration getHeaderNames() 取得所有的標(biāo)頭名稱
Enumeration getHeaders(String name) 取得所有name的標(biāo)頭
int getIntHeader(String name) 取得整數(shù)類型name的標(biāo)頭
long getDateHeader(String name)取得日期類型name的標(biāo)頭
Cookie[] getCookies()取得與請求有關(guān)的cookies
4.其他方法:
String getContextPath()取得Context路徑
String getMethod()取得Http方法(Get|Post)
String getServletPath()獲取接受客戶提交信息的頁面
String getProtocol()取得使用的協(xié)議(Http/1.1 Http/1.0)
String getQueryString() 取得請求的參數(shù)字符串(Http方法必須為GET)
String getRequestedSessionId()取得用戶端的Session ID
String getRequestURI() 取得請求URL,不包括請求的參數(shù)字符串
String getRemoteAddr() 取得用戶的IP地址
String getRemoteHost()取得用戶的主機名稱
int getRemotePort()取得用戶的主機端口
String getRemoteUser()取得用戶的名稱
void setCharacterEncoding(String encoding)設(shè)定編碼格式,用來解決窗體傳遞
中文的問題
response對象:是封裝JSP處理數(shù)據(jù)后產(chǎn)生的結(jié)果,封裝在
javax.servlet.http.HttpServletResponse接口
void addCookie(Cookie cookie)新增cookie
void addDateHeader(String name,long date)新增long類型的值到name標(biāo)頭
void addHeader(String name,String value)新增String類型的值到name標(biāo)頭
void addIntHeader(String name,int value)新增int類型的值到name標(biāo)頭
void setDateHeader(String name,long date)指定long類型的值到name標(biāo)頭
void setHeader(String name,String value)指定String類型的值到name標(biāo)頭
void setIntHeader(String name,int value)指定String類型的值到name標(biāo)頭
void sendError(int sc)傳遞狀態(tài)碼
void sendError(int sc,String msg)傳遞狀態(tài)碼和錯誤信息
void setStatus(int sc)設(shè)定狀態(tài)碼
String encodeRedirectURL(String url)使用sendRedirect()方法的URL予以編
碼
response.setContentType("text/htmlcharset=Big5")改語句同%@ page
contentType="text/html;charset="Big5"%>等價
cookie技術(shù):
Cookie使站點跟蹤特定訪問者的訪問次數(shù),最后訪問時間,訪問者進入站點的路
徑
Cookie告訴在線廣告商廣告被點擊的次數(shù)
Cookie能幫助站點統(tǒng)計用戶個人資料以實現(xiàn)各種各樣的個性化服務(wù)
創(chuàng)建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將返回給當(dāng)前頁
面所在目錄及其子目錄下的所有頁面
boolean getSecure()如果瀏覽器通過安全協(xié)議發(fā)送cookies將返回true,使用標(biāo)
準(zhǔn)協(xié)議將返回false
String getValue()返回Cookie的值
int getVersion()返回Cookie的協(xié)議版本
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的區(qū)別:
session存放在服務(wù)器端的內(nèi)存里
session隨用戶的登陸而生成,用戶下線后消失
session存放在服務(wù)器里,用戶不能修改,安全性好
session是一個動作狀態(tài)的持續(xù),是一個會話
session對象,記錄每個客戶端的訪問狀態(tài)以便跟蹤每個客戶端的操作狀態(tài),被封
裝為javax.servlet.http.HttpSession接口,可以通過pageContext.getSession()
方法獲取一個session對象
session對象中的方法:
long getCreationTime()獲得session產(chǎn)生的時間
String getId()獲得session的ID
long getLastAccessedTime()取得用戶最后通過這個session送出請求的時間,
單位:毫秒
long getMaxInactiveInterval()取得最大session不活動的時間,若超過這個時
間,session將會失效 單位:秒
void invalidate()取消session對象
boolean isNew()判斷session是否為新的
void setMaxInactiveInterval(int interval)設(shè)定最大session不活動的時間,
若超過這時間,session將回失效 單位:秒
application對象,負(fù)責(zé)提供應(yīng)用程序在服務(wù)器中運行時的一些全局信息,直到服
務(wù)器關(guān)閉,被封裝在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所產(chǎn)生的異常
信息寫入log文件中
pageContent對象一般用于設(shè)置,獲取當(dāng)前JSP頁面的一些屬性,也能夠存取頁面
的其他隱含對象(out,request,response,session,application等)及其所有屬性,
被封裝在javax.servlet.jsp.PageContext接口
javax.servlet.jsp.PageContext類所提供的四種范圍參數(shù):PAGE_SCOPE
REQUEST_SCOPE SESSION_SCOPE APPLICATION_SCOPE
Exception getException()回傳目前網(wǎng)頁的異常,不過此網(wǎng)頁要為error page
JspWriter getOut()回傳目前網(wǎng)頁的輸出流,如out
Object getPage()回傳目前網(wǎng)頁的Servlet實體
ServletRequest getRequest()回傳目前網(wǎng)頁的請求
ServletResponse getResponse()回傳目前網(wǎng)頁的響應(yīng)
ServletConfig getServletConfig()回傳目前網(wǎng)頁的ServletConfig對象
ServletContext getServletContext()回傳此網(wǎng)頁的執(zhí)行環(huán)境
HttpSession getSession()回傳目前和網(wǎng)頁有聯(lián)系的會話
config對象,主要作用是取得服務(wù)器的配置信息,被封裝在
javax.servlet.servletConfig接口,痛多pageContext.getServletConfig()方法
可以獲取一個config對象,提供存取servlet類初始化參數(shù)以及有關(guān)服務(wù)器環(huán)境信
息的ServletContext對象
config對象的常用方法:
public String getInitParatemer(String name) 獲取服務(wù)器指定name參數(shù)的
初始值
public Enumeration getInitParameterNames() 獲取服務(wù)器所有初始參數(shù)的名
字
public ServletContext getServletContext()獲取Servlet的上下文
public String getServletName()獲取Servlet的服務(wù)器名
page對象,代表JSP文件被編譯后的Servlet類對象,實質(zhì)就是Object的一個實例
exception對象,主要作用是顯示吟唱信息,代表了JSP文件運行時所產(chǎn)生的例外
對象,是java.lang.Throwable類的一個實例,只有在包含%@ page
isErrorPage="true"%>的頁面才可以被使用,在一般的JSP頁面中使用該對象無法
編譯JSP文件
希望本文所述對大家的JSP程序設(shè)計有所幫助。
您可能感興趣的文章:- 基于JSP編譯器基本語法的使用詳解
- JSP學(xué)習(xí)筆記之基礎(chǔ)語法
- JSP經(jīng)典學(xué)習(xí)筆記(包含各種入門常用語法)
- JSP語法Page指令
- JSP開發(fā)入門(二)----JSP語法的基本原理
- 十一、JSP及語法概要
- JSP入門教程之客戶端驗證、常用輸出方式及JSTL基本用法
- jsp web.xml文件的作用及基本配置
- JSP的9種基本內(nèi)置組件
- JSP入門教程之基本語法簡析