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