版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
■合肥學(xué)
HEFEIUNIVER
JSP內(nèi)置對(duì)象
合肥學(xué)浣
HEFEIUNIVERSITY
本篇內(nèi)容
?JSP內(nèi)置對(duì)象概述
?JSP常用內(nèi)置對(duì)象
合肥學(xué)浣
一、JSP內(nèi)置對(duì)象概述HEFEIUNIVERSITY
?JSP中預(yù)先定義好一些常用的對(duì)象,在JSP頁(yè)面
中可以直接使用這些對(duì)象,不需要顯式聲明和實(shí)
例化
合肥學(xué)浣
HEFEIUNIVERSITY
<html>
<head>
<title>firstjsp</title>
</head>
<body>
<%
Stringdate=newjava.util.Date().toLocaleString();
%>.
『小X、JSP頁(yè)面中直接使用預(yù)定義胳的out對(duì)象,
v/html>調(diào)用其printin方法輸出劭態(tài)砌察
合肥學(xué)浣
JSP內(nèi)置對(duì)象概述HEFEIUNIVERSITY
?JSP在第一次運(yùn)行時(shí)會(huì)被翻譯成Servlet,在這個(gè)
過(guò)程中,容器會(huì)創(chuàng)建出一些與Web開(kāi)發(fā)相關(guān)的對(duì)
象,JSP頁(yè)面中可以直接使用,這些對(duì)象稱(chēng)之為
JSP內(nèi)置對(duì)象,或德式對(duì)彖
?內(nèi)置對(duì)象方便了JSP頁(yè)面的編程
合肥學(xué)浣
HEFEIUNIVERSITY
二.JSP常用內(nèi)置對(duì)象
?JSP九大內(nèi)置(隱式)對(duì)象
■out
■request
■response
■session
■application
■config
■pageContext
■page
■exception
查看JSP生成Servlet中預(yù)定義的對(duì)象
合肥學(xué)浣
HEFEIUNIVERSITY
2.1out對(duì)象
?out對(duì)象是一個(gè)輸出流對(duì)象,用來(lái)客戶(hù)端輸出數(shù)據(jù)
?out對(duì)象常用方法
■print(),println(),write(),writln()
合肥學(xué)浣
HEFEIUNIVERSITY
2.2request對(duì)象
>request對(duì)象封裝了客戶(hù)端發(fā)送給服務(wù)器的請(qǐng)求消
息,用于得到用戶(hù)提交的信息
?主要方法和作用參見(jiàn)Servlet篇HttpServletRequest
合肥學(xué)浣
HEFEIUNIVERSITY
獲取客戶(hù)端請(qǐng)求參數(shù)
<html>
<head></head>部臺(tái)處理代碼
<body>
<%
Stringusername=request.getParameter("userName");
String[]likes=request.getParameterValues("Iike");
StringIikes2="";
if(null!=likes){
for(inti=0;i<likes.length;i++)
Iikes2+=likes[i]+"
)
out.println("username:"+username);
out.println("likes:"+likes2);
%>
</body>
</html>
合肥學(xué)浣
HEFEIUNIVERSITY
JSP中文請(qǐng)求參數(shù)亂碼解決
>首先保證請(qǐng)求頁(yè)面的字符集編碼為utf-8
?JSP頁(yè)面獲取請(qǐng)求參數(shù)前,增加以下語(yǔ)句:
■針對(duì)POST提交的中文請(qǐng)求參數(shù)亂碼有效
request.setCharacterEncoding("utf-8H);
合肥學(xué)浣
HEFEIUNIVERSITY
中文亂碼總結(jié)(FINAL)
>原則:各處使用的字符集全部統(tǒng)一設(shè)置為包含中
文字符的某種編碼集,推薦utf-8
>HTML頁(yè)面head標(biāo)記內(nèi)加入:
<metahttp-equiv=uContent-Type,Jcontent=utext/html;charset=utf-8”>
?JSP頁(yè)面開(kāi)始
<%@pagelanguage="java"contentType="text/htmI;charset=utf-8"%>
或
<%@pagelanguage="java"contentType="text/html;
charset=UTF-8HpageEncoding=HUTF-8"%>
合肥學(xué)浣
HEFEIUNIVERSITY
中文亂碼總結(jié)(FINAL)
?JSP頁(yè)面獲取請(qǐng)求參數(shù)前,增加:
request.setCharacterEncoding("utf-8n);
?Servlet程序開(kāi)始處加:
response.setContentType("text/html;charset=utf-8");
request.setCharacterEncodingC^tf-S");
?GET方式下中文請(qǐng)求參數(shù)亂碼解決:參見(jiàn)
HttpServletRequest&Response對(duì)象PPT自學(xué)部
合肥學(xué)浣
HEFEIUNIVERSITY
2.3response對(duì)象
?response對(duì)象代表服務(wù)器對(duì)客戶(hù)端的響應(yīng),封裝
響應(yīng)消息,主要用于向客戶(hù)端輸出信息
?主要方法和作用參見(jiàn)Servlet篇
HttpServletResponse又寸象
合肥學(xué)浣
HEFEIUNIVERSITY
response實(shí)現(xiàn)重定向
?示例:登錄成功后,轉(zhuǎn)向首頁(yè)示例
提交給JSP判斷處理
<html>
<head></head>
<body>
<%
Stringusername=request.getParameter("userName");
Stringpwd=request.getParameter("pwd");
if(utom,,.equals(username)&&t<123},.equals(pwd)){
response.sendRedirect("index.jsp");
}else{
response.sendRedirect("error.html");
)
%>
</body>
</html>
合肥學(xué)浣
HEFEIUNIVERSITY
2.4session對(duì)象
>Q:用戶(hù)登錄后,希望在后續(xù)各個(gè)頁(yè)面的訪(fǎng)問(wèn)中都
能得到登錄用戶(hù)的信息(比如登錄用戶(hù)名),通過(guò)
目前所學(xué)的知識(shí)該如何實(shí)現(xiàn),
>從訪(fǎng)問(wèn)每個(gè)頁(yè)面時(shí),都把用戶(hù)名作為請(qǐng)求參數(shù)傳
遞過(guò)去
我們需要一種方便的技術(shù),
怩就實(shí)現(xiàn)多個(gè)頁(yè)面之間的微據(jù)共享/
合肥學(xué)浣
HEFEIUNIVERSITY
保席森某處的
劇據(jù)
合肥學(xué)浣
HEFEIUNIVERSITY
>HTTP是一種無(wú)狀態(tài)協(xié)議,瀏覽器發(fā)送請(qǐng)求,
Web服務(wù)器回應(yīng)結(jié)果,每次請(qǐng)求完成,服務(wù)器會(huì)
斷開(kāi)連接,并不會(huì)保留上一次的請(qǐng)求信息
合肥學(xué)浣
HEFEIUNIVERSITY
會(huì)話(huà)與會(huì)話(huà)對(duì)象
?session對(duì)象“會(huì)話(huà)對(duì)象〃
?會(huì)話(huà)
■從客戶(hù)打開(kāi)一個(gè)瀏覽器窗口連接到服務(wù)器開(kāi)始,一
直到客戶(hù)關(guān)閉該瀏覽器窗口為止,稱(chēng)為一個(gè)會(huì)話(huà)一
—session
?session對(duì)象是一個(gè)在一次會(huì)話(huà)過(guò)程中持續(xù)有效的
對(duì)象,可以通過(guò)此對(duì)象存儲(chǔ)和提取一些在會(huì)話(huà)過(guò)
程中始終保留的共享信息
合肥學(xué)浣
HEFEIUNIVERSITY
session對(duì)象常用方法
?往session對(duì)象里存值,方法原型
voidsetAttribute(Stringname,Objectvalue)
,方法說(shuō)明:
■將一個(gè)value值(Object對(duì)象)與一個(gè)名稱(chēng)(Key值)關(guān)聯(lián)
后,存入session對(duì)象
■示例:
u,,u,5
session.setAttribute(usernameJtom);
合肥學(xué)浣
HEFEIUNIVERSITY
session對(duì)象的數(shù)據(jù)存儲(chǔ)結(jié)構(gòu)一Map
合肥學(xué)浣
HEFEIUNIVERSITY
01234567
aa值1值2值3值4值5值6值7值8
名1名2名3名4名5名6名7名8
map值工值2值3值4值5值6值7值8
Map數(shù)據(jù)結(jié)構(gòu)將值(value)與名字(Key)關(guān)聯(lián)存儲(chǔ)
根據(jù)名字(Key)取對(duì)應(yīng)值(value)
合肥學(xué)浣
HEFEIUNIVERSITY
session對(duì)象常用方法
?從session對(duì)象里取值,方法原型
ObjectgetAttribute(Stringname)
?方法說(shuō)明:
■從session對(duì)象里,根據(jù)指定name(Key值),取對(duì)應(yīng)的
value值
■返回類(lèi)型為Object(需要向下轉(zhuǎn)型),若不存在返回null
合肥學(xué)浣
HEFEIUNIVERSITY
可以向session里存任何類(lèi)型值,
并指定一個(gè)關(guān)聯(lián)name(任意合法標(biāo)識(shí)符)
session.setAttribute(uusername,5,utom55);
StringuserName=
(String)session.getAtt^bute(ttusername,,);
合肥學(xué)浣
HEFEIUNIVERSITY
//User為用戶(hù)已定義類(lèi)
Useruser=newUser();
session.setAttribute(^<username^^,user);
Useruser=
(User)session.getAttribute(<<username,5);
合肥學(xué)浣
HEFEIUNIVERSITY
session應(yīng)用舉例
>用戶(hù)登錄后,后續(xù)訪(fǎng)問(wèn)頁(yè)面取出登錄用戶(hù)信息并
顯示示例
?對(duì)于需要登錄才可以操作訪(fǎng)問(wèn)的系統(tǒng),通過(guò)判斷
session對(duì)象是否有對(duì)應(yīng)信息以防止未登錄用戶(hù)的
頁(yè)面訪(fǎng)問(wèn)
合肥學(xué)浣
HEFEIUNIVERSITY
理解session實(shí)現(xiàn)機(jī)制I
?session對(duì)象對(duì)應(yīng)于服務(wù)器端的一塊內(nèi)存空間
?session對(duì)象與客戶(hù)端一個(gè)瀏覽器窗口相對(duì)應(yīng),服
務(wù)器為每一個(gè)(發(fā)送請(qǐng)求的)客戶(hù)端瀏覽器窗口
開(kāi)辟一塊內(nèi)存空間,創(chuàng)建屬于各自窗口的session
對(duì)象,彼此互不影響
合肥學(xué)浣
HEFEIUNIVERSITY
服務(wù)器端
服務(wù)器內(nèi)存
瀏覽器窗口1
褚泰session
>屬于洌覺(jué)器窗al
趙據(jù)
的session對(duì)索
session
瀏覽器窗口2屬于洌寬器窗a2
數(shù)據(jù)的session對(duì)象
錯(cuò)點(diǎn)
合肥學(xué)浣
HEFEIUNIVERSITY
?示例:不同瀏覽器窗口對(duì)應(yīng)不同session對(duì)象
卜問(wèn)題:服務(wù)器如何做到各自窗口訪(fǎng)問(wèn)的是屬
于各自的session對(duì)象
i%合肥學(xué)浣
______________HEFEIUNIVERSITY
理解session實(shí)現(xiàn)機(jī)制H
?服務(wù)器為每一個(gè)客戶(hù)端瀏覽器窗口創(chuàng)建各自
session對(duì)象的同時(shí),為每個(gè)session對(duì)象分配一
個(gè)獨(dú)一無(wú)二的會(huì)話(huà)標(biāo)傭符sessionid,該sessionid
用以唯一標(biāo)識(shí)某個(gè)窗口
?服務(wù)器在響應(yīng)消息中將sessionid傳遞給客戶(hù)端,
客戶(hù)端后續(xù)每次請(qǐng)求訪(fǎng)問(wèn)中都把這個(gè)sessionid傳
送給服務(wù)器,服務(wù)器程序根據(jù)sessionid可以判斷
是哪個(gè)客戶(hù)端瀏覽器窗口發(fā)出的請(qǐng)求,從而選擇
合肥學(xué)浣
HEFEIUNIVERSITY
服冬黑瑞
瀏覽器窗口1
E2F34C
瀏覽器窗口2
返命
3DE5A7
.點(diǎn)
合肥學(xué)浣
后續(xù)訪(fǎng)問(wèn)HEFEIUNIVERSITY
瀏覽器窗口1
施泰帶上、
E2F34C
瀏覽器窗口2
錯(cuò)點(diǎn)帶上
3DE5A7
合肥學(xué)浣
HEFEIUNIVERSITY
?示例:H即Watch觀察session對(duì)象與瀏覽器窗口
的對(duì)應(yīng)關(guān)系及sessionid
合肥學(xué)浣
HEFEIUNIVERSITY
說(shuō)明
bsession會(huì)話(huà)對(duì)象與一個(gè)客戶(hù)端瀏覽器窗口相對(duì)應(yīng)
■從打開(kāi)一個(gè)窗口向服務(wù)器發(fā)出請(qǐng)求,開(kāi)啟一次會(huì)話(huà),到
關(guān)閉該窗口,會(huì)話(huà)過(guò)程結(jié)束,在這個(gè)期間,窗口共享一
個(gè)session對(duì)象
■重新打開(kāi)一個(gè)新的瀏覽器窗口向服務(wù)器發(fā)出請(qǐng)求,會(huì)開(kāi)
啟一次新會(huì)話(huà),服務(wù)器創(chuàng)建另外一個(gè)新的session對(duì)象
合肥學(xué)浣
HEFEIUNIVERSITY
session對(duì)象的有效時(shí)間
?session是駐留在服務(wù)器端內(nèi)存的對(duì)象
>可以通過(guò)以下方式釋放其所占內(nèi)存資源
-程序顯式刪除
■在web.xml文件配置session失效時(shí)間
?查看匕171(^安裝目錄\8111\\%13仇011
<session-config>
<session-timeout>30</session-timeout>
</session-config>
合肥學(xué)浣
HEFEIUNIVERSITY
session對(duì)象其它方法
?通過(guò)程序顯式刪除session對(duì)象,釋放資源
■刪除session對(duì)象
invalidate()
■刪除session中指定名稱(chēng)的對(duì)象
remove(Stringname)
合肥學(xué)浣
HEFEIUNIVERSITY
session對(duì)象其它方法
?獲取session對(duì)象的會(huì)話(huà)標(biāo)識(shí)符id
getld()
?見(jiàn)教材P201例子
?教材p203示例,session存取值分別采用putValue
和getValue方法
■作用同setAttribute、getAttribute
■putValuegetValue方法已不推薦用
合肥學(xué)浣
HEFEIUNIVERSITY
2.5application對(duì)象
?application對(duì)象由多個(gè)客戶(hù)端瀏覽器窗口共享,
它的共享范圍是所有的客戶(hù)
?不同的客戶(hù)端瀏覽器窗口擁有系同的session對(duì)象
,而所有的客戶(hù)端瀏覽器窗口擁有同一個(gè)
application對(duì)象
合肥學(xué)浣
HEFEIUNIVERSITY
瀏覽器窗口1
瀏覽器窗口2
錯(cuò)點(diǎn)
合肥學(xué)浣
HEFEIUNIVERSITY
application對(duì)象常用方法
?往application對(duì)象里存值
voidsetAttribute(Stringname,Objectvalue)
?方法說(shuō)明:
■將一個(gè)value值(Object對(duì)象)與一個(gè)名稱(chēng)(Key值)關(guān)聯(lián)
后,存入applicaton對(duì)象
合肥學(xué)浣
HEFEIUNIVERSITY
application對(duì)象常用方法
?從application對(duì)象里取值
ObjectgetAttribute(Stringname)
,方法說(shuō)明:
■從application對(duì)象里,根據(jù)指定name,取對(duì)應(yīng)的value值
■返回類(lèi)型為Object(需要向下轉(zhuǎn)型),若不存在返回null
application示例
合肥學(xué)浣
HEFEIUNIVERSITY
2.6JSP其它內(nèi)置對(duì)象
?page對(duì)象
?代表由JSP文件生成的Servlet對(duì)象自身
?pageContext對(duì)象
-提供了返回JSP頁(yè)面其它內(nèi)置(隱式)對(duì)象的方法
?config對(duì)象
■獲取初始化配置信息
?exception對(duì)象
■用來(lái)發(fā)現(xiàn)、捕獲和處理異常
合肥學(xué)浣
_______________________HEFEIUNIVERSITY
2.7Cookie(不是JSP內(nèi)置對(duì)象)
?問(wèn)題:某些網(wǎng)站,可以記住用戶(hù)名和密碼,實(shí)現(xiàn)
自動(dòng)登錄,如何實(shí)現(xiàn)
合肥學(xué)浣
HEFEIUNIVERSITY
Cookie
>session用以在服務(wù)器端保存一些狀態(tài)信息,
Cookie則可以在客戶(hù)端進(jìn)行保存
?Cookie英文原意"小甜點(diǎn)"
?Cookie是服務(wù)器在客戶(hù)機(jī)上建立的小文本文件
■當(dāng)客戶(hù)端瀏覽器訪(fǎng)問(wèn)服務(wù)器上某個(gè)資源時(shí),Web服務(wù)器
可以在響應(yīng)消息頭中附帶傳送給瀏覽器一些數(shù)據(jù),并通常
以文本文件的形式保留在客戶(hù)機(jī)硬盤(pán)(或?yàn)g覽器內(nèi)存)中
■客戶(hù)下次訪(fǎng)問(wèn)該服務(wù)器時(shí),在請(qǐng)求中會(huì)帶上Cookie文件
中的信息傳遞給服務(wù)器
合肥學(xué)浣
HEFEIUNIVERSITY
服務(wù)器端
合肥學(xué)浣
HEFEIUNIVERSITY
?觀察網(wǎng)站在客戶(hù)機(jī)上建的Cookie
合肥學(xué)浣
HEFEIUNIVERSITY
Cookie常用方法
?創(chuàng)建Cookie對(duì)象的構(gòu)造方法
■參數(shù)name代表cookie名稱(chēng)
■參數(shù)value代表cookie值
Cookie(Stringname,Stringvalue)
■示例:
Cookiecookie=newCookie("username”,“jack”)
安取一個(gè)Cookie對(duì)象,
名稱(chēng),username,值為jack
?合肥學(xué)浣
HEFEIUNIVERSITY
Cookie常用方法
?設(shè)置Cookie在瀏覽器客戶(hù)機(jī)上保存的最大時(shí)間
?單位秒
■如果不設(shè)置,貝UCookie保留在客戶(hù)機(jī)瀏覽器進(jìn)程內(nèi)存中
setMaxAge()
?示例
Cookiecookie=newCookie("username”,“jack”)
//該cookie在客戶(hù)機(jī)硬盤(pán)上保留1分鐘
cookie.setMaxAge(60);
合肥學(xué)浣
HEFEIUNIVERSITY
Cookie常用方法
?通過(guò)response對(duì)象如下方法將Cookie發(fā)送給客戶(hù)
,山
乂而
addCookie(Cookie對(duì)象名)
■示例:
Cookiecookie=newCookie("username",“jack”);
cookie.setMaxAge(60);
response.addCookie(cookie);
合肥學(xué)浣
HEFEIUNIVERSITY
Cookie常用方法
?返回Cookie名稱(chēng)
getName()
?返回Cookie值
getValue()
?示例
Cookiecookie=newCookie("username",“jack”)
Stringname=cookie.getName();
Stringvalue=cookie.getValue();
合肥學(xué)浣
HEFEIUNIVERSITY
?讀取某網(wǎng)站在客戶(hù)機(jī)上保留的Cookie
■返回Cookie對(duì)象數(shù)組
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024旋挖樁的合同范本
- 2024版電子競(jìng)技團(tuán)隊(duì)組建與運(yùn)營(yíng)合同
- 2024年食用油采購(gòu)協(xié)議
- 2024年適用:人工智能語(yǔ)音識(shí)別技術(shù)研發(fā)合同
- 2024年股權(quán)投資合同的投資金額、投資方式和投資期限
- 2024年航天器部件研發(fā)與生產(chǎn)合作協(xié)議
- 2025年度建筑材料綠色生產(chǎn)技術(shù)轉(zhuǎn)移合同3篇
- 2024年度文化創(chuàng)意產(chǎn)業(yè)設(shè)計(jì)人員派遣合同3篇
- 2025年度汽車(chē)4S店銷(xiāo)售合同附帶車(chē)輛安全性能檢測(cè)服務(wù)3篇
- 2024年高端裝備制造技術(shù)許可合同標(biāo)的及相關(guān)義務(wù)
- 2024年加油站場(chǎng)地出租協(xié)議
- 南寧房地產(chǎn)市場(chǎng)月報(bào)2024年08月
- 2024年金融理財(cái)-擔(dān)保公司考試近5年真題附答案
- 高中語(yǔ)文古代文學(xué)課件:先秦文學(xué)
- 人教版五年級(jí)上冊(cè)遞等式計(jì)算100道及答案
- 文娛產(chǎn)業(yè)政策與發(fā)展趨勢(shì)
- 集團(tuán)公司2024年度內(nèi)控評(píng)價(jià)工作方案
- 20以?xún)?nèi)加減法口算練習(xí)題帶括號(hào)填空135
- 公廁保潔服務(wù)投標(biāo)方案
- 六年級(jí)-上學(xué)期-心理健康教育教案
- 行車(chē)組織題庫(kù)(199道)
評(píng)論
0/150
提交評(píng)論