- Java EE程序設計與開發實踐教程
- 馮志林編著
- 1759字
- 2021-10-27 17:05:27
3.3 JSP內置對象

第3章任務4
1.內置對象含義
內置對象指在JSP頁面中內置的、不需要定義就可以在網頁中直接使用的對象。JSP程序員一般情況下使用這些內置對象的頻率比較高。內置對象特點包括:
1)內置對象是自動載入的,因此它不需要直接實例化。
2)內置對象是通過Web容器來實現和管理的。
3)在所有的JSP頁面中,直接調用內置對象都是合法的。
2.JSP內置對象類型
JSP規范中定義了9種內置對象,主要介紹使用下面5種:
1)out對象:負責管理對客戶端的輸出。
2)request對象:負責得到客戶端的請求信息。
3)response對象:負責向客戶端發出響應。
4)session對象:負責保存同一客戶端一次會話過程中的一些信息。
5)application對象:表示整個應用環境的信息。
3.內置對象的作用范圍
1)out:page。
2)request:request。
3)response:page。
4)session:session。
5)application:application。
4.out對象
該對象是javax.Servlet.jsp.JspWriter類的實例,主要用于向客戶端輸出數據。該對象的常用方法包括:
1)print():輸出各種類型數據。
2)newLine():輸出一個換行符。
3)close():關閉輸出流,從而可以強制終止當前頁面的剩余部分向瀏覽器輸出。
5.request對象
該對象是javax.Servlet.http.HttpServletRequest類的實例,主要用于封裝用戶提交的信息。通過調用該對象相應的方法可以獲取封裝的信息,即使用該對象可以獲取用戶提交信息。該對象的常用方法如表3-1所示。
表3-1 request對象的常用方法

【例3-3】 實現一個簡單的用戶登錄程序。

第3章任務5
要求用戶輸入用戶名和密碼,如果輸入的用戶名為admin,密碼也為admin,則輸出OK,否則輸出ERROR。
該程序的輸入是用戶名和密碼,輸出為兩個字符串,因此需要兩個頁面實現。
1)新建Web工程,工程名為HelloJsp,選擇Java EE版本為“JavaEE 5”。
2)新建頁面login.jsp提供一個輸入用戶名和密碼的表單。代碼如下:

JSP指令<%@page pageEncoding="utf-8"%>是為了使JSP頁面中能夠顯示中文字符。
3)新建頁面validate.jsp接收頁面login.jsp提交的用戶名和密碼,并對用戶輸入的用戶名和密碼進行驗證,如果滿足條件輸出OK,否則輸出ERROR。代碼如下:

4)運行工程,顯示內容如圖3-4所示。

圖3-4 輸入用戶名正確(admin)與錯誤(tom)的運行結果
6.response對象
response對象是HttpServletResponse類的實例,主要用于向客戶端發送數據。該對象的常用方法如表3-2所示。
表3-2 response對象的常用方法

7.session對象
session對象是HttpSession類的實例,用于保存每個用戶的信息,以便跟蹤每個客戶的操作狀態。從一個客戶打開瀏覽器并連接到服務器開始,到客戶關閉瀏覽器離開這個服務器結束,被稱為一個會話。
當一個客戶首次訪問服務器上的一個JSP頁面時,JSP引擎產生一個session對象,同時分配一個String類型的Id號,JSP引擎同時將這個Id號發送到客戶端,存放在Cookie中,這樣session對象和客戶之間就建立了一一對應的關系。
該對象的常用方法如表3-3所示。
表3-3 session對象的常用方法

【例3-4】 request對象和session對象實例演示。
要求main.jsp只有在經過登錄以后才能訪問。
1)修改HelloJsp工程中的validate.jsp,將登錄信息放置到session中。代碼如下:

第3章任務6

session.setAttribute("login","true")用于在session中保存登錄成功的變量login。
2)修改main.jsp,增加重定向代碼,代碼如下:


● session.getAttribute("login")。用于從session中獲取變量login的值。
● response.sendRedirect("login.jsp")。通過response對象將下一個頁面重定向到登錄頁面login.jsp,即強制跳轉到login.jsp,從而滿足index.jsp只有在經過登錄以后才能訪問。
3)運行工程,當執行http://127.0.0.1:8080/Charpt3Exam2/index.jsp時,由于沒有登錄成功過,因此工程將重定向到(即強制調用)login.jsp。當輸入正確的用戶名和密碼后,再次執行index.jsp時,將顯示“登錄成功”。顯示內容如圖3-5所示。

圖3-5 重定向頁面結果
8.application對象
application對象是ServletContex類的實例,是一個共享的內置對象,在服務器開啟之后建立,服務器關閉之后application對象就會銷毀,也就是說它是為所有訪問該服務器的用戶共享。當用戶在所訪問的網站的各個頁面之間瀏覽時,這個application對象都是同一個,直到服務器關閉。它允許JSP頁面的Servlet與包括在同一應用程序中的任何Web組件共享信息。該類的常用方法:set/get/removeAttribute,即設置/獲取/刪除一個屬性。

第3章任務7
【例3-5】 application示例:網站計數器。
1)在HelloJsp工程中WebRoot目錄下新建count.jsp,用于對指定頁面進行計數,輸入參數為pageName,指定要計數的頁面名稱。代碼如下:


● request.getParameter("pageName")。用于獲取applicationTest.jsp中的<jsp:param name="pageName"value="testCount"/>中的參數值testCount。
● application.setAttribute(pageName, count)。用于將本次的頁面單擊數保存到application的testCount變量中。
2)新建網頁applicationTest.jsp,該頁面包含count.jsp,以實現由count.jsp對applicationTest.jsp的計數。代碼如下:

● <jsp:param name="pageName" value="testCount" />。用于給count.jsp網頁傳遞參數。參數名稱為pageName,參數值為testCount,參數值可以不提供。
● JSP指令<%@page pageEncoding="utf-8"%>。必須提供,否則將會出現中文亂碼。因為盡管applicationTest.jsp網頁中沒有中文字符,但是其包含的網頁count.jsp中有中文,所以也必須增加中文支持的JSP指令。
3)運行工程,當執行http://127.0.0.1:8080/Charpt3Exam3/applicationTest.jsp時,可以看到頁面單擊總次數。顯示內容如圖3-6所示。

圖3-6 多次運行頁面結果
- LabVIEW 2018 虛擬儀器程序設計
- Learning SAP Analytics Cloud
- Python算法從菜鳥到達人
- WordPress 4.0 Site Blueprints(Second Edition)
- SQL 經典實例
- 寫給程序員的Python教程
- Puppet:Mastering Infrastructure Automation
- Improving your Penetration Testing Skills
- 軟件自動化測試實戰解析:基于Python3編程語言
- 測試架構師修煉之道:從測試工程師到測試架構師(第2版)
- Web應用程序設計:ASP
- Test-Driven iOS Development with Swift 4(Third Edition)
- Scratch少兒編程思維訓練:培養孩子的邏輯思維和計算思維能力
- Play Framework Essentials
- Web Penetration Testing with Kali Linux