?? 0022.htm
字號(hào):
<html>
<head>
<title>新時(shí)代軟件教程:操作系統(tǒng) 主頁(yè)制作 服務(wù)器 設(shè)計(jì)軟件 網(wǎng)絡(luò)技術(shù) 編程語(yǔ)言 文字編輯</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<style>
<!--
body, table {font-size: 9pt; font-family: 宋體}
a {text-decoration:none}
a:hover {color: red;text-decoration:underline}
.1 {background-color: rgb(245,245,245)}
-->
</style>
</head>
<p align="center"><script src="../../1.js"></script></a>
<p align="center"><big><strong>二、會(huì)話狀態(tài)管理</strong></big></p>
<p align="right">作 者 : 仙人掌工作室<p> 會(huì)話狀態(tài)維持是 Web 應(yīng)用開發(fā)者必須面對(duì)的問題。有多種方法可以用來(lái)解決這個(gè)問題,如使用 Cookies 、隱藏的表單輸入域,或直接將狀態(tài)信息附加到 URL 中。 Java Servlet 提供了一個(gè)在多個(gè)請(qǐng)求之間持續(xù)有效的會(huì)話對(duì)象,該對(duì)象允許用戶存儲(chǔ)和提取會(huì)話狀態(tài)信息。 JSP 也同樣支持 Servlet 中的這個(gè)概念。
<P> 在 <A href= ../../java.sun.com/products/jsp/docs.html>Sun 的 JSP 指南 </A> 中可以看到許多有關(guān)隱含對(duì)象的說明(隱含的含義是,這些對(duì)象可以直接引用,不需要顯式地聲明,也不需要專門的代碼創(chuàng)建其實(shí)例)。例如 request 對(duì)象,它是 HttpServletRequest 的一個(gè)子類。該對(duì)象包含了所有有關(guān)當(dāng)前瀏覽器請(qǐng)求的信息,包括 Cookies , HTML 表單變量等等。 session 對(duì)象也是這樣一個(gè)隱含對(duì)象。這個(gè)對(duì)象在第一個(gè) JSP 頁(yè)面被裝載時(shí)自動(dòng)創(chuàng)建,并被關(guān)聯(lián)到 request 對(duì)象上。與 ASP 中的會(huì)話對(duì)象相似, JSP 中的 session 對(duì)象對(duì)于那些希望通過多個(gè)頁(yè)面完成一個(gè)事務(wù)的應(yīng)用是非常有用的。
<P> 為說明 session 對(duì)象的具體應(yīng)用,接下來(lái)我們用三個(gè)頁(yè)面模擬一個(gè)多頁(yè)面的 Web 應(yīng)用。第一個(gè)頁(yè)面( q1.html )僅包含一個(gè)要求輸入用戶名字的 HTML 表單,代碼如下:
<pre>
<br> < HTML>
<br> < BODY>
<br> < FORM METHOD=POST ACTION="q2.jsp">
<br> 請(qǐng)輸入您的姓名:
<br> < INPUT TYPE=TEXT NAME="thename">
<br> < INPUT TYPE=SUBMIT VALUE="SUBMIT">
<br> < /FORM>
<br> < /BODY>
<br> < /HTML>
</pre>
<P> 第二個(gè)頁(yè)面是一個(gè) JSP 頁(yè)面( q2.jsp ),它通過 request 對(duì)象提取 q1.html 表單中的 thename 值,將它存儲(chǔ)為 name 變量,然后將這個(gè) name 值保存到 session 對(duì)象中。 session 對(duì)象是一個(gè)名字 / 值對(duì)的集合,在這里,名字 / 值對(duì)中的名字為“ thename ”,值即為 name 變量的值。由于 session 對(duì)象在會(huì)話期間是一直有效的,因此這里保存的變量對(duì)后繼的頁(yè)面也有效。 q2.jsp 的另外一個(gè)任務(wù)是詢問第二個(gè)問題。下面是它的代碼:
<pre>
<br> < HTML>
<br> < BODY>
<br> < %@ page language="java" %>
<br> < %! String name=""; %>
<br> < %
<br> name = request.getParameter("thename");
<br> session.putValue("thename", name);
<br> %>
<br> 您的姓名是: < %= name %>
<br> < p>
<br> < FORM METHOD=POST ACTION="q3.jsp">
<br> 您喜歡吃什么 ?
<br> < INPUT TYPE=TEXT NAME="food">
<br> < P>
<br> < INPUT TYPE=SUBMIT VALUE="SUBMIT">
<br> < /FORM>
<br> < /BODY>
<br> < /HTML>
</pre>
<P> 第三個(gè)頁(yè)面也是一個(gè) JSP 頁(yè)面( q3.jsp ),主要任務(wù)是顯示問答結(jié)果。它從 session 對(duì)象提取 thename 的值并顯示它,以此證明雖然該值在第一個(gè)頁(yè)面輸入,但通過 session 對(duì)象得以保留。 q3.jsp 的另外一個(gè)任務(wù)是提取在第二個(gè)頁(yè)面中的用戶輸入并顯示它:
<pre>
<br> < HTML>
<br> < BODY>
<br> < %@ page language="java" %>
<br> < %! String food=""; %>
<br> < %
<br> food = request.getParameter("food");
<br> String name = (String) session.getValue("thename");
<br> %>
<br> 您的姓名是: < %= name %>
<br> < P>
<br> 您喜歡吃: < %= food %>
<br> < /BODY>
<br> < /HTML>
</pre>
</font><p>
</table>
<p align="center"><script src="../../2.js"></script></a>
</body>
</html>
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -