JSP內(nèi)置對象課件_第1頁
JSP內(nèi)置對象課件_第2頁
JSP內(nèi)置對象課件_第3頁
JSP內(nèi)置對象課件_第4頁
JSP內(nèi)置對象課件_第5頁
已閱讀5頁,還剩53頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

■合肥學(xué)

HEFEIUNIVER

JSP內(nèi)置對象

合肥學(xué)浣

HEFEIUNIVERSITY

本篇內(nèi)容

?JSP內(nèi)置對象概述

?JSP常用內(nèi)置對象

合肥學(xué)浣

一、JSP內(nèi)置對象概述HEFEIUNIVERSITY

?JSP中預(yù)先定義好一些常用的對象,在JSP頁面

中可以直接使用這些對象,不需要顯式聲明和實

例化

合肥學(xué)浣

HEFEIUNIVERSITY

<html>

<head>

<title>firstjsp</title>

</head>

<body>

<%

Stringdate=newjava.util.Date().toLocaleString();

%>.

『小X、JSP頁面中直接使用預(yù)定義胳的out對象,

v/html>調(diào)用其printin方法輸出劭態(tài)砌察

合肥學(xué)浣

JSP內(nèi)置對象概述HEFEIUNIVERSITY

?JSP在第一次運行時會被翻譯成Servlet,在這個

過程中,容器會創(chuàng)建出一些與Web開發(fā)相關(guān)的對

象,JSP頁面中可以直接使用,這些對象稱之為

JSP內(nèi)置對象,或德式對彖

?內(nèi)置對象方便了JSP頁面的編程

合肥學(xué)浣

HEFEIUNIVERSITY

二.JSP常用內(nèi)置對象

?JSP九大內(nèi)置(隱式)對象

■out

■request

■response

■session

■application

■config

■pageContext

■page

■exception

查看JSP生成Servlet中預(yù)定義的對象

合肥學(xué)浣

HEFEIUNIVERSITY

2.1out對象

?out對象是一個輸出流對象,用來客戶端輸出數(shù)據(jù)

?out對象常用方法

■print(),println(),write(),writln()

合肥學(xué)浣

HEFEIUNIVERSITY

2.2request對象

>request對象封裝了客戶端發(fā)送給服務(wù)器的請求消

息,用于得到用戶提交的信息

?主要方法和作用參見Servlet篇HttpServletRequest

合肥學(xué)浣

HEFEIUNIVERSITY

獲取客戶端請求參數(shù)

<html>

<head></head>部臺處理代碼

<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中文請求參數(shù)亂碼解決

>首先保證請求頁面的字符集編碼為utf-8

?JSP頁面獲取請求參數(shù)前,增加以下語句:

■針對POST提交的中文請求參數(shù)亂碼有效

request.setCharacterEncoding("utf-8H);

合肥學(xué)浣

HEFEIUNIVERSITY

中文亂碼總結(jié)(FINAL)

>原則:各處使用的字符集全部統(tǒng)一設(shè)置為包含中

文字符的某種編碼集,推薦utf-8

>HTML頁面head標記內(nèi)加入:

<metahttp-equiv=uContent-Type,Jcontent=utext/html;charset=utf-8”>

?JSP頁面開始

<%@pagelanguage="java"contentType="text/htmI;charset=utf-8"%>

<%@pagelanguage="java"contentType="text/html;

charset=UTF-8HpageEncoding=HUTF-8"%>

合肥學(xué)浣

HEFEIUNIVERSITY

中文亂碼總結(jié)(FINAL)

?JSP頁面獲取請求參數(shù)前,增加:

request.setCharacterEncoding("utf-8n);

?Servlet程序開始處加:

response.setContentType("text/html;charset=utf-8");

request.setCharacterEncodingC^tf-S");

?GET方式下中文請求參數(shù)亂碼解決:參見

HttpServletRequest&Response對象PPT自學(xué)部

合肥學(xué)浣

HEFEIUNIVERSITY

2.3response對象

?response對象代表服務(wù)器對客戶端的響應(yīng),封裝

響應(yīng)消息,主要用于向客戶端輸出信息

?主要方法和作用參見Servlet篇

HttpServletResponse又寸象

合肥學(xué)浣

HEFEIUNIVERSITY

response實現(xiàn)重定向

?示例:登錄成功后,轉(zhuǎn)向首頁示例

提交給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對象

>Q:用戶登錄后,希望在后續(xù)各個頁面的訪問中都

能得到登錄用戶的信息(比如登錄用戶名),通過

目前所學(xué)的知識該如何實現(xiàn),

>從訪問每個頁面時,都把用戶名作為請求參數(shù)傳

遞過去

我們需要一種方便的技術(shù),

怩就實現(xiàn)多個頁面之間的微據(jù)共享/

合肥學(xué)浣

HEFEIUNIVERSITY

保席森某處的

劇據(jù)

合肥學(xué)浣

HEFEIUNIVERSITY

>HTTP是一種無狀態(tài)協(xié)議,瀏覽器發(fā)送請求,

Web服務(wù)器回應(yīng)結(jié)果,每次請求完成,服務(wù)器會

斷開連接,并不會保留上一次的請求信息

合肥學(xué)浣

HEFEIUNIVERSITY

會話與會話對象

?session對象“會話對象〃

?會話

■從客戶打開一個瀏覽器窗口連接到服務(wù)器開始,一

直到客戶關(guān)閉該瀏覽器窗口為止,稱為一個會話一

—session

?session對象是一個在一次會話過程中持續(xù)有效的

對象,可以通過此對象存儲和提取一些在會話過

程中始終保留的共享信息

合肥學(xué)浣

HEFEIUNIVERSITY

session對象常用方法

?往session對象里存值,方法原型

voidsetAttribute(Stringname,Objectvalue)

,方法說明:

■將一個value值(Object對象)與一個名稱(Key值)關(guān)聯(lián)

后,存入session對象

■示例:

u,,u,5

session.setAttribute(usernameJtom);

合肥學(xué)浣

HEFEIUNIVERSITY

session對象的數(shù)據(jù)存儲結(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)存儲

根據(jù)名字(Key)取對應(yīng)值(value)

合肥學(xué)浣

HEFEIUNIVERSITY

session對象常用方法

?從session對象里取值,方法原型

ObjectgetAttribute(Stringname)

?方法說明:

■從session對象里,根據(jù)指定name(Key值),取對應(yīng)的

value值

■返回類型為Object(需要向下轉(zhuǎn)型),若不存在返回null

合肥學(xué)浣

HEFEIUNIVERSITY

可以向session里存任何類型值,

并指定一個關(guān)聯(lián)name(任意合法標識符)

session.setAttribute(uusername,5,utom55);

StringuserName=

(String)session.getAtt^bute(ttusername,,);

合肥學(xué)浣

HEFEIUNIVERSITY

//User為用戶已定義類

Useruser=newUser();

session.setAttribute(^<username^^,user);

Useruser=

(User)session.getAttribute(<<username,5);

合肥學(xué)浣

HEFEIUNIVERSITY

session應(yīng)用舉例

>用戶登錄后,后續(xù)訪問頁面取出登錄用戶信息并

顯示示例

?對于需要登錄才可以操作訪問的系統(tǒng),通過判斷

session對象是否有對應(yīng)信息以防止未登錄用戶的

頁面訪問

合肥學(xué)浣

HEFEIUNIVERSITY

理解session實現(xiàn)機制I

?session對象對應(yīng)于服務(wù)器端的一塊內(nèi)存空間

?session對象與客戶端一個瀏覽器窗口相對應(yīng),服

務(wù)器為每一個(發(fā)送請求的)客戶端瀏覽器窗口

開辟一塊內(nèi)存空間,創(chuàng)建屬于各自窗口的session

對象,彼此互不影響

合肥學(xué)浣

HEFEIUNIVERSITY

服務(wù)器端

服務(wù)器內(nèi)存

瀏覽器窗口1

褚泰session

>屬于洌覺器窗al

趙據(jù)

的session對索

session

瀏覽器窗口2屬于洌寬器窗a2

數(shù)據(jù)的session對象

錯點

合肥學(xué)浣

HEFEIUNIVERSITY

?示例:不同瀏覽器窗口對應(yīng)不同session對象

卜問題:服務(wù)器如何做到各自窗口訪問的是屬

于各自的session對象

i%合肥學(xué)浣

______________HEFEIUNIVERSITY

理解session實現(xiàn)機制H

?服務(wù)器為每一個客戶端瀏覽器窗口創(chuàng)建各自

session對象的同時,為每個session對象分配一

個獨一無二的會話標傭符sessionid,該sessionid

用以唯一標識某個窗口

?服務(wù)器在響應(yīng)消息中將sessionid傳遞給客戶端,

客戶端后續(xù)每次請求訪問中都把這個sessionid傳

送給服務(wù)器,服務(wù)器程序根據(jù)sessionid可以判斷

是哪個客戶端瀏覽器窗口發(fā)出的請求,從而選擇

合肥學(xué)浣

HEFEIUNIVERSITY

服冬黑瑞

瀏覽器窗口1

E2F34C

瀏覽器窗口2

返命

3DE5A7

.點

合肥學(xué)浣

后續(xù)訪問HEFEIUNIVERSITY

瀏覽器窗口1

施泰帶上、

E2F34C

瀏覽器窗口2

錯點帶上

3DE5A7

合肥學(xué)浣

HEFEIUNIVERSITY

?示例:H即Watch觀察session對象與瀏覽器窗口

的對應(yīng)關(guān)系及sessionid

合肥學(xué)浣

HEFEIUNIVERSITY

說明

bsession會話對象與一個客戶端瀏覽器窗口相對應(yīng)

■從打開一個窗口向服務(wù)器發(fā)出請求,開啟一次會話,到

關(guān)閉該窗口,會話過程結(jié)束,在這個期間,窗口共享一

個session對象

■重新打開一個新的瀏覽器窗口向服務(wù)器發(fā)出請求,會開

啟一次新會話,服務(wù)器創(chuàng)建另外一個新的session對象

合肥學(xué)浣

HEFEIUNIVERSITY

session對象的有效時間

?session是駐留在服務(wù)器端內(nèi)存的對象

>可以通過以下方式釋放其所占內(nèi)存資源

-程序顯式刪除

■在web.xml文件配置session失效時間

?查看匕171(^安裝目錄\8111\\%13仇011

<session-config>

<session-timeout>30</session-timeout>

</session-config>

合肥學(xué)浣

HEFEIUNIVERSITY

session對象其它方法

?通過程序顯式刪除session對象,釋放資源

■刪除session對象

invalidate()

■刪除session中指定名稱的對象

remove(Stringname)

合肥學(xué)浣

HEFEIUNIVERSITY

session對象其它方法

?獲取session對象的會話標識符id

getld()

?見教材P201例子

?教材p203示例,session存取值分別采用putValue

和getValue方法

■作用同setAttribute、getAttribute

■putValuegetValue方法已不推薦用

合肥學(xué)浣

HEFEIUNIVERSITY

2.5application對象

?application對象由多個客戶端瀏覽器窗口共享,

它的共享范圍是所有的客戶

?不同的客戶端瀏覽器窗口擁有系同的session對象

,而所有的客戶端瀏覽器窗口擁有同一個

application對象

合肥學(xué)浣

HEFEIUNIVERSITY

瀏覽器窗口1

瀏覽器窗口2

錯點

合肥學(xué)浣

HEFEIUNIVERSITY

application對象常用方法

?往application對象里存值

voidsetAttribute(Stringname,Objectvalue)

?方法說明:

■將一個value值(Object對象)與一個名稱(Key值)關(guān)聯(lián)

后,存入applicaton對象

合肥學(xué)浣

HEFEIUNIVERSITY

application對象常用方法

?從application對象里取值

ObjectgetAttribute(Stringname)

,方法說明:

■從application對象里,根據(jù)指定name,取對應(yīng)的value值

■返回類型為Object(需要向下轉(zhuǎn)型),若不存在返回null

application示例

合肥學(xué)浣

HEFEIUNIVERSITY

2.6JSP其它內(nèi)置對象

?page對象

?代表由JSP文件生成的Servlet對象自身

?pageContext對象

-提供了返回JSP頁面其它內(nèi)置(隱式)對象的方法

?config對象

■獲取初始化配置信息

?exception對象

■用來發(fā)現(xiàn)、捕獲和處理異常

合肥學(xué)浣

_______________________HEFEIUNIVERSITY

2.7Cookie(不是JSP內(nèi)置對象)

?問題:某些網(wǎng)站,可以記住用戶名和密碼,實現(xiàn)

自動登錄,如何實現(xiàn)

合肥學(xué)浣

HEFEIUNIVERSITY

Cookie

>session用以在服務(wù)器端保存一些狀態(tài)信息,

Cookie則可以在客戶端進行保存

?Cookie英文原意"小甜點"

?Cookie是服務(wù)器在客戶機上建立的小文本文件

■當客戶端瀏覽器訪問服務(wù)器上某個資源時,Web服務(wù)器

可以在響應(yīng)消息頭中附帶傳送給瀏覽器一些數(shù)據(jù),并通常

以文本文件的形式保留在客戶機硬盤(或瀏覽器內(nèi)存)中

■客戶下次訪問該服務(wù)器時,在請求中會帶上Cookie文件

中的信息傳遞給服務(wù)器

合肥學(xué)浣

HEFEIUNIVERSITY

服務(wù)器端

合肥學(xué)浣

HEFEIUNIVERSITY

?觀察網(wǎng)站在客戶機上建的Cookie

合肥學(xué)浣

HEFEIUNIVERSITY

Cookie常用方法

?創(chuàng)建Cookie對象的構(gòu)造方法

■參數(shù)name代表cookie名稱

■參數(shù)value代表cookie值

Cookie(Stringname,Stringvalue)

■示例:

Cookiecookie=newCookie("username”,“jack”)

安取一個Cookie對象,

名稱,username,值為jack

?合肥學(xué)浣

HEFEIUNIVERSITY

Cookie常用方法

?設(shè)置Cookie在瀏覽器客戶機上保存的最大時間

?單位秒

■如果不設(shè)置,貝UCookie保留在客戶機瀏覽器進程內(nèi)存中

setMaxAge()

?示例

Cookiecookie=newCookie("username”,“jack”)

//該cookie在客戶機硬盤上保留1分鐘

cookie.setMaxAge(60);

合肥學(xué)浣

HEFEIUNIVERSITY

Cookie常用方法

?通過response對象如下方法將Cookie發(fā)送給客戶

,山

乂而

addCookie(Cookie對象名)

■示例:

Cookiecookie=newCookie("username",“jack”);

cookie.setMaxAge(60);

response.addCookie(cookie);

合肥學(xué)浣

HEFEIUNIVERSITY

Cookie常用方法

?返回Cookie名稱

getName()

?返回Cookie值

getValue()

?示例

Cookiecookie=newCookie("username",“jack”)

Stringname=cookie.getName();

Stringvalue=cookie.getValue();

合肥學(xué)浣

HEFEIUNIVERSITY

?讀取某網(wǎng)站在客戶機上保留的Cookie

■返回Cookie對象數(shù)組

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論