官术网_书友最值得收藏!

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 多次運行頁面結果

主站蜘蛛池模板: 洞头县| 逊克县| 延寿县| 新昌县| 津市市| 宁蒗| 方正县| 石楼县| 东宁县| 安远县| 平湖市| 含山县| 舒城县| 怀仁县| 神池县| 二连浩特市| 准格尔旗| 新疆| 三穗县| 丰顺县| 晋江市| 昭苏县| 崇左市| 通榆县| 太仓市| 成武县| 高平市| 常宁市| 上虞市| 泸水县| 鄂伦春自治旗| 井研县| 宝丰县| 都兰县| 张家口市| 五华县| 南木林县| 南陵县| 宣威市| 达日县| 东莞市|