版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
JSP開發(fā)案例教程JSP開發(fā)案例教程第3章JSP內置對象3.1~3.6節(jié)案例ch3.5_login:用戶登錄05本章內容session對象和Cookie對象0601JSP內置對象概述07案例ch3.7_survey:問卷調查08小結與練習02response對象04out對象03response對象JSP開發(fā)案例教程3.1JSP內置對象概述為了方便JSP網頁的開發(fā),提高編程效率,JSP規(guī)范允許一些常用對象在JSP頁面的源代碼中能直接使用,而不需要在JSP頁面中預先聲明和實例化,這些對象稱之為JSP內置對象。內置對象也稱為隱式對象、預定義變量,JSP內置對象有9個:request、response、out、session、application、pageContext、config、page和exception,其功能和作用域如表3-1所示。它們的作用域不盡相同:其中作用域最小的對象是response、out、pageContext、config、page和exception,他們的作用域為page,在本網頁中有效;其次是request,只在本次請求期間有效;session在本次會話中有效;application在本次服務器活動期間有效。3.1JSP內置對象概述內置對象功能說明衍生類作用域request請求對象,取得瀏覽器數據及服務器系統(tǒng)的信息javax.servlet.ServletRequestrequestresponse響應對象,響應瀏覽器時的相關信息和操作javax.servlet.ServletResponsepageout輸出對象,控制數據輸出的操作javax.servlet.jsp.JspWriterpagesession會話對象,記錄與處理上線者的個別數據javax.servlet.http.HttpSessionSessionapplication應用程序對象,記錄與處理上線者共享的數據javax.servlet.ServletContextapplicationpageContext頁面上下文對象,提供對JSP頁面所有對象以及命名空間的訪問javax.servlet.jsp.PageContextpagepage頁面對象,代表目前的這個JSP網頁對象javax.lang.Objectpageconfig配置對象,取得JSP編譯后的Servlet信息javax.servlet.ServletConfigpageexception異常對象,異常處理機制javax.lang.Throwablepage表3-1JSP的9個內置對象3.1JSP內置對象概述JSP開發(fā)案例教程3.2request對象request對象記錄了瀏覽器的請求信息,主要用于服務器接收瀏覽器傳送到服務器的數據(包括頭信息、系統(tǒng)信息、請求方式以及請求參數等),也可用于在服務器中運行的頁面或程序之間傳遞數據。request對象的作用域為在本次請求期間有效。request對象是javax.servlet.http.HttpServletRequest類的實例。每當瀏覽器向服務器請求一個JSP頁面時,JSP引擎就會創(chuàng)建一個新的request對象來代表這個請求。request對象提供了一系列方法來獲取輸入的控件名及其值、地址欄傳遞的參數、Cookies、HTTP頭信息、HTTP方法等。3.2request對象序號方法說明1StringgetParameter(Stringname)返回此request中參數name對應的值,若不存在則返回null。常用于獲取表單控件的值,或獲取URL參數的值2String[]getParameterValues(Stringname)返回屬性名為name的所有值的字符串數組,若不存在則返回null3ObjectgetAttribute(Stringname)返回屬性名為name的值,如果不存在則返回null4voidsetAttribute(Stringname,Objectobj)為屬性名為name的屬性設值5HttpSessiongetSession()返回request對應的session對象,如果沒有,則創(chuàng)建一個6Cookie[]getCookies()返回瀏覽器所有的Cookie的對象數組7voidgetRequestDispatcher(Stringpath)
.forward(request,response)請求的轉發(fā)。服務器在執(zhí)行當前文件的過程中轉向目標網頁或程序path,同時將request對象和response對象傳遞過去8StringgetQueryString()返回此requestURL包含的查詢字符串9EnumerationgetParameterNames()返回請求中所有參數名的集合10EnumerationgetHeaderNames()返回所有HTTP頭的名稱集合11LocalegetLocale()返回當前頁的Locale對象,可以在response中設置12StringgetHeader(Stringname)返回name指定的信息頭13StringgetContextPath()返回requestURI中指明的上下文路徑14StringgetServletPath()返回所請求的Servlet路徑15StringgetPathInfo()返回任何額外的與此requestURL相關的路徑16StringgetMethod()返回此request中的HTTP方法,如GET、POST或PUT17StringgetRequestURI()返回request的URI18StringgetRemoteAddr()返回瀏覽器的IP地址19intgetServerPort()返回服務器端口號表3-2request對象的部分方法3.2request對象JSP開發(fā)案例教程3.3response對象response對象代表了服務器向瀏覽器返回的信息發(fā)送文件數據流輸出文字等內容12設置響應頭發(fā)送網頁重定向343.2response對象序號方法描述1voidsendRedirect(Stringpath)使用指定的URL向瀏覽器發(fā)送一個臨時的間接響應,瀏覽器接收到請求后實現網頁跳轉,即重定向2voidaddCookie(Cookiecookie)添加指定的cookie對象至響應中3voidsetCharacterEncoding(Stringcharset)設置響應的編碼集(MIME字符集),例如UTF-84voidsetContentType(Stringtype)設置響應的內容的類型和編碼集,如果響應還未被提交的話5StringencodeRedirectURL(Stringurl)對sendRedirect()方法使用的URL進行編碼6StringencodeURL(Stringurl)將URL編碼,回傳包含SessionID的URL7booleancontainsHeader(Stringname)返回指定的響應頭是否存在8booleanisCommitted()返回響應是否已經提交到瀏覽器9voidaddDateHeader(Stringname,longdate)添加指定名稱的響應頭和日期值10voidaddHeader(Stringname,Stringvalue)添加指定名稱的響應頭和值11voidaddIntHeader(Stringname,intvalue)添加指定名稱的響應頭和int值12voidsetBufferSize(intsize)設置響應體的緩存區(qū)大小13voidflushBuffer()將任何緩存中的內容寫入瀏覽器14voidresetBuffer()清除基本的緩存數據,不包括響應頭和狀態(tài)碼15voidreset()清除任何緩存中的任何數據,包括狀態(tài)碼和各種響應頭16voidsendError(intsc)使用指定的狀態(tài)碼向瀏覽器發(fā)送一個出錯響應,然后清除緩存17voidsendError(intsc,Stringmsg)使用指定的狀態(tài)碼和消息向瀏覽器發(fā)送一個出錯響應18voidsetContentLength(intlen)指定HTTPServlet中響應的內容的長度,此方法用來設置HTTPContent-Length信息頭19voidsetDateHeader(Stringname,longdate)使用指定名稱和值設置響應頭的名稱和內容20voidsetHeader(Stringname,Stringvalue)使用指定名稱和值設置響應頭的名稱和內容21voidsetIntHeader(Stringname,intvalue)指定int類型的值到name標頭22voidsetLocale(Localeloc)設置響應的語言環(huán)境,如果響應尚未被提交的話23voidsetStatus(intsc)設置響應的狀態(tài)碼表3-3response對象的部分方法response響應對象主要將JSP容器(Servlet)處理后的結果傳回給瀏覽器。response對象是javax.servlet.ServletResponse類的實例。3.2response對象轉發(fā)(forward),即調用request.getRequestDispatcher(Stringpath).forward(request,response)方法,轉發(fā)是發(fā)生在服務器端的行為,歸屬于瀏覽器向服務器發(fā)起的同一次請求,request不會丟失,地址欄的URL地址不會改變。重定向(redirect)轉發(fā)(forward)重定向(redirect),即調用response.sendRedirect(Stringpath)方法,可以將網頁重定向到另一個頁面。
重定向操作中的path用于指定目標路徑,可以是相對路徑,也可以是不同主機的其他URL地址。重定向時,服務器將新地址發(fā)送給瀏覽器,瀏覽器將會把新地址顯示在地址欄,并向服務器重新發(fā)起請求。3.2response對象執(zhí)行redirect后,地址欄URL改為重定向的目標URL,相當于在瀏覽器地址欄里輸入新的URL后按“Enter”鍵;而執(zhí)行forward后,地址欄里的請求URL不會改變。redirect是發(fā)生在瀏覽器的跳轉,速度稍慢;而forward是發(fā)生在服務器端的跳轉,速度極快。redirect可以跳轉到本Web應用之外的網站,而forward不能。執(zhí)行redirect后生成第二次請求,而執(zhí)行forward后依然是上一次請求。在redirect之后的目標頁面中不能訪問原請求的請求參數,因為是第二次請求了,所有原請求的請求參數、request范圍的屬性等將全部丟失;而forward的目標頁面可以訪問原請求的請求參數,可以看成時同一次請求,所有原請求的請求參數、request范圍的屬性全部存在。重定向(redirect)通常應用在需要實現網頁跳轉,且對于在本網頁中已生成的request作用域的對象,在后續(xù)的頁面中不再需要的場合;而轉發(fā)(forward)通常應用在需要實現網頁跳轉,且對于在本網頁中已生成的request作用域的對象,在后續(xù)的頁面中仍然需要的場合。重定向與轉發(fā)兩者之間的相同之處是:能實現網頁跳轉,以在瀏覽器上展示新的網頁內容。重定向與轉發(fā)兩者之間的區(qū)別是:3.2response對象JSP開發(fā)案例教程3.4out對象out對象是javax.servlet.jsp.JspWriter的一個實例??捎闷鋚rint()方法向response對象輸出內容out對象用來在response對象中寫入內容,具有page頁面作用域表3-4out對象的部分方法序號方法說明1voidprint/println(基本數據類型)輸出一個基本數據類型的值2voidprint/println(Objectibj)輸出一個對象的引用地址3voidprint/println(Stringstr)輸出一個字符串的值4voidnewLine()輸出一個換行符5voidclear()清除輸出緩沖區(qū)的內容。若緩沖區(qū)為空,則產生IOException異常6voidclearBuffer()清除輸出緩沖區(qū)的內容。若緩沖區(qū)為空,無異常出現7voidflush()直接將目前暫存于緩沖區(qū)的數據刷新輸出8voidclose()關閉輸出流。流一旦被關閉,則不能再使用out對象做任何操作9intgetBufferSize()獲取目前緩沖區(qū)的大?。↘B)10intgetRemaining()獲取目前使用后還剩下的緩沖區(qū)大小(KB)3.3out對象println()輸出字符和換行符。但此換行符是\n,在瀏覽器網頁的源代碼或控制臺會實現換行,但在頁面預覽時,這種在瀏覽器網頁的源代碼中的換行將被忽略,所以在頁面瀏覽時看到的仍然在一行,只是用空格分隔。所以,如果在頁面上需要換行時,可在要輸出的內容之后附加上“<br>”。out.print()out.println()print()在頁面輸出字符,輸出的字符將接在之前已有的字符之后。3.3out對象out.write()則是java.io.Writer類中定義的方法,其中javax.servlet.jsp.JspWriter繼承了java.io.Writer類。write()方法只能輸出字符、字符數組和字符串等與字符相關的數據。out.print()out.println()out.print()和out.println()是javax.servlet.jsp.JspWriter類中定義的方法。print()和println()方法可將各種類型的數據轉換成字符串的形式輸出。注:如果字符串對象的值為null,print()和println()方法將輸出內容為“null”的字符串,而write()方法則是拋出NullPointerException異常。所以在JSP編程中,print()和println()方法用得更多。3.3out對象JSP開發(fā)案例教程3.5案例ch3.5_login:用戶登錄應用表單和JSP內置對象,實現用戶登錄功能包含3個頁面:用戶登錄頁index.jsp,登錄驗證頁loginCheck.jsp和用戶功能頁main.jsp。頁面的測試效果如圖3-1至3-4所示,在控制臺Console中的輸出如圖3-5所示,項目的文件列表如圖3-6所示。圖3-1用戶登錄圖3-2登錄失敗圖3-3登錄成功,URL重定向到用戶功能頁案例:3.5案例ch3.5_login:用戶登錄
圖3-6項目文件列表圖3-4登錄成功,在服務器端轉發(fā)到用戶功能頁圖3-5控制臺中的輸出3.5案例ch3.5_login:用戶登錄新建Web項目ch3.5_login,然后在webapp目錄中新建網頁index.jsp并在網頁中添加代碼,其主要代碼如下:圖3-1用戶登錄表單form的action屬性值,指明了由誰來處理提交的表單及其控件的值。動作action的值可以是jsp頁面,也可以是Servlet(本書在第6章將會介紹它),或是Web應用框架指定的行為(在利用Struts或Spring框架開發(fā)JSP的方式中會涉及),甚至可以是其他網站上的程序3.5案例ch3.5_login:用戶登錄表單的提交方式method屬性,通常有post和get兩種取值:用get方式提交時,表單中的控件名稱和值,將以參數的形式,放在URL中提交給服務器,以獲取服務器返回的內容。例如用百度搜索引擎搜索時,所提交的搜索文字將放在地址欄中提交,用戶可以看到參數名稱及參數的值。get方式是表單form默認的提交方式。用POST方式提交時,表單中的控件名稱和值,將以隱藏的形式由瀏覽器推送給服務器,服務器接收信息并處理后返回網頁內容給瀏覽器。此時,地址欄中不會出現控件名稱和值等參數,這對于輸入密碼等敏感信息,或者控件數量比較多、值的內容比較長的情況,會非常有利。另外,對于提交文件的表單,必須使用POST方式,且還需設定相應的編碼方式enctype,這在本書第4章有介紹。3.5案例ch3.5_login:用戶登錄將網頁index.jsp另存為loginCheck.jsp,修改其代碼,主要代碼如下。網頁的測試效果在登錄失敗時如圖3-2所示。圖3-2登錄失敗第17~18行,從request對象中獲取所輸入的值,其中的username和password都是控件的名稱name。第19行,從URL參數中獲取值也是用這個方法request.getParameter(name)。第21行的判斷if(username==null||password==null)成立,則表示名稱為username或password的屬性在對應的在request對象中不存在,所以值為空對象null。在值為空對象null的情況下,此處的程序無須再往下執(zhí)行,用代碼第23所寫的break而退出循環(huán),否則運行第25行代碼會報錯(空對象null不許調用其方法)3.5案例ch3.5_login:用戶登錄將網頁loginCheck.jsp另存為main.jsp,將網頁標題title和頁面中的h3標題都更改為“用戶功能”,刪除中間的第20~50行的for循環(huán)代碼,從第19行開始增加如下代碼。測試用戶登錄,當用戶“tom”登錄成功時如圖3
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 素描室內寫生課程設計
- 相機掛件課程設計
- 英語語言學課程設計
- 航空專業(yè)票務課程設計
- (中職中專)貿法律與案例教學設計全書電子教案整本書教案1-6章全
- 電信課程設計論文
- 糖化鍋課程設計選型
- 給水廠課程設計總結心得
- 游戲觀察課程設計
- 聯考素描課程設計考什么
- 中醫(yī)內科學:中醫(yī)內科學肢體經絡病證考試題(題庫版)
- 燈具行業(yè)采購工作總結
- 大學寫作智慧樹知到期末考試答案章節(jié)答案2024年麗水學院
- NB-T31022-2012風力發(fā)電工程達標投產驗收規(guī)程
- GJB9001C產品風險評估報告
- 2024年天津三源電力集團限公司社會招聘33人【重點基礎提升】模擬試題(共500題)附帶答案詳解
- 蘇教版六年級上冊科學期末測試卷帶答案
- 中式婚宴主題宴會設計方案策劃(2篇)
- 媒介與性別文化傳播智慧樹知到期末考試答案章節(jié)答案2024年浙江工業(yè)大學
- 我會舉手來發(fā)言(教案)2023-2024學年心理健康一年級
- 形勢與政策中國式現代化論文1500字
評論
0/150
提交評論