第7章 JSP的表單處理與Cookie 7-1 JSP狀態管理的基礎 7-2 URL參數傳遞 7-3 HTML表單欄位處理

Slides:



Advertisements
Similar presentations
模块五 动态网页技术 任务五 查询记录 任务一 表单设计制作 任务二 简单动态的 ASP 页面制作任务三 页面与数据库的集成任务四 添加记录 任务六 电商系统融入网站.
Advertisements

Java Web 开发 授课人:张鸽. 第三讲 JSP 内置对象  JSP 有以下九种内置对象,包括:  ·request ,请求对象  ·response ,响应对象  ·pageContext ,页面上下文对象  ·session ,会话对象  ·application ,应用程序对象.
第一單元 建立java 程式.
动态Web开发技术--JSP.
基于JSP搭建Web应用程序.
上节课我们是讲解了request, response, session, application 等内置对象,有了它们,我们就可以编写一个完整的应用程序了。 我们来看ebank这个小应用程序的编写。
第5章 HTML 標籤介紹.
JSTL标签库 讲师:梁 桐 北京传智播客教育 1。缓存数据 2。处理字符乱码 3。监听器中的定时器
第4章 JSP元素與隱含物件 4-1 JSP的腳本元素 4-2 JSP的指引元素 4-3 JSP的動作元素 4-4 JSP的隱含物件
第3章 超文本标记语言(HTML) 3.1 基本结构标记 3.2 文本格式标记 3.3 超链接标记<A></A>
Hello World 體驗實作第一個JSP程式.
第 4 章 資料輸入表單與 Request物件 製作.
第四章 網頁表單與資料傳遞.
動態網頁程式 設計實習 1042 數位教材 單元 9:ASP.NET物件及表單
Ch06 建立WEB表單 網頁程式設計.
表單處理及URL參數傳遞.
LINQ 建國科技大學 資管系 饒瑞佶.
专题4:JSP脚本和指令.
9/28號專題報告 Web網頁遊戲 曾建瑋.
TCP協定 (傳輸層).
Q101 在701 SDX Linux上的標準安裝與使用程序v2
JDK 安裝教學 (for Win7) Soochow University
2-3 基本數位邏輯處理※.
資料庫管理 操作DBMS 指導教授:楊維邦  助教:廖皓翔.
JAVA 程式設計與資料結構 第六章 輸出與輸入.
客戶端的檔案上傳 HtmlInputFile檔案控制項 上傳單一檔案 同時上傳多個檔案.
進階 WWW 程式設計 -- PHP Regular Expression 靜宜大學資訊管理學系 蔡奇偉副教授 2004
HiNet 光世代非固定制 用戶端IPv6設定方式說明
第六讲 JSP中的文件操作(2) 教学目的 本讲继续讲述JSP中使用Java输入、输出流实现文件的读写操作 。 1 文件上传 2 文件下载
SQL Stored Procedure SQL 預存程序.
ASP.NET基本設計與操作 建國科技大學 資管系 饒瑞佶 2007年.
Methods 靜宜大學資工系 蔡奇偉副教授 ©2011.
網頁切換移轉 JS vs. ASP.NET.
檔案與磁碟的基本介紹.
Ch04 表單 網頁程式設計.
EBSCOhost App應用程式 安裝方式.
Java 程式設計 講師:FrankLin.
FTP檔案上傳下載 實務與運用.
網頁切換移轉 JS vs. ASP.NET.
JAVA 程式設計與資料結構 第四章 陣列、字串與數學物件.
网站设计 前端 选择器(复习),表单.
表單(Form).
第一單元 建立java 程式.
VS.NET 2003 IDE.
網頁程式設計 本章投影片錄自HTML5、CSS3、RWD、jQuery Mobile跨裝網頁設計 陳惠貞 著 碁峰資訊股份有限公司出版
第10章 Web應用程式的資料分享 10-1 Web應用程式的基礎 10-2 設定ASP.NET的Web應用程式 10-3 網頁間的資料分享
PLC-GPPW軟體使用教學 授課教師:張祖烈
Ch20. 計算器 (Mac 版本).
Pocket Access.
Ch09 在網頁之間傳遞資訊 網頁程式設計.
表單(Form).
資料來源 2 網路過濾軟體之安裝說明 資料來源 2.
表格(HTML – FORM).
期末考.
GridView.
DRC with Calibre 課程名稱:VLSI 報告人:黃家洋 日期: 改版(蔡秉均) 1.
第6章 PHP的数据采集.
表格(HTML – FORM)
流程控制:Switch-Case 94學年度第一學期‧資訊教育 東海大學物理系.
JQuery 標籤操作 建國科技大學 資管系 饒瑞佶 2013/4 V1.
編輯網頁可用那些應用程式? 記事本 Word FrontPage Dreamweaver.
國立台灣大學 關懷弱勢族群電腦課程 By 資訊工程 黃振修
清單的CSS樣式.
Cloud Training Material- 事件 Sherman Wang
電子郵件簡報.
電腦網絡與教學.
第五章 自訂佈景主題與文字處理 講授者:詹雅愔.
HTML表单 JSP借由标签所构成的表单区块中,取得用户在其中特定字段输入的数据內容 。 JSP 动态网页新技术.
SQLite資料庫 靜宜大學資管系 楊子青.
表单页面 表单是用户利用浏览器对Web站点网络数据库进行查询的一种界面,用户利用表单可以输入信息或选择选项等,然后将这些信息提交给服务器进行处理。通过表单,既可以将浏览器的信息发送到Internet服务器上,同时表单也可以使用户与站点的浏览者交互或从浏览者那里收集信息。它是网页的设计者和使用者相互交流的工具。表单对象包括文本域(单行、多行、密码)、列表、菜单、复选框、单选框、按钮等。
Presentation transcript:

第7章 JSP的表單處理與Cookie 7-1 JSP狀態管理的基礎 7-2 URL參數傳遞 7-3 HTML表單欄位處理 7-6 取得HTTP標頭和系統環境變數

7-1 JSP狀態管理的基礎 7-1-1 HTTP通訊協定的特性 7-1-2 狀態管理的種類

7-1-1 HTTP通訊協定的特性 HTTP通訊協定不會持續保持連線:當瀏覽程式提出請求時才會建立連線,在請求後就斷線等待回應,每一次請求和回應都需事先建立連線。 HTTP通訊協定並不會保留狀態:因為HTTP通訊協定並不會保持連線,所以在連線時,伺服端和客戶端互相知道對方,一旦請求結束,就互不相干,使用者狀態並不會保留。 HTTP通訊協定與資料類型無關:任何種類的資料都可以透過HTTP通訊協定傳送到客戶端,這就是Content-Type標頭資訊指定的MIME資料類型。

7-1-2 狀態管理的種類-說明 狀態管理(State Management)是在JSP程式間傳遞資料,以便不同的JSP程式能夠保留使用者狀態。 狀態管理以狀態資訊儲存的位置,可以區分成兩大類:儲存在客戶端和伺服端。

7-1-2 狀態管理的種類-客戶端的狀態管理 客戶端的狀態管理是將資料儲存在使用者電腦,或是儲存在JSP程式建立的網頁標籤中,以便將資料傳遞給下一頁JSP程式,常用的方法如下表所示:

7-1-2 狀態管理的種類-伺服端的狀態管理 伺服端的狀態管理是將資料儲存在伺服端的電腦,換句話說,狀態管理的使用者狀態資訊會佔用伺服器的資源,常用的方法如下表所示:

7-2 URL參數傳遞-說明 在瀏覽程式輸入的URL網址,或是JSP程式將HTTP請求轉向到其它JSP程式時,都可以使用URL參數來傳遞資料。 如果在URL網址附加有參數,JSP程式可以使用request物件的方法,或JSTL的param隱含物件來取得傳遞的參數值。

7-2 URL參數傳遞-方法1 在HTML超連結標籤<a href="">…</a>的href屬性後加上參數,如下所示: <a href="Ch7_2next.jsp?Username=陳會安 &Password=1234"> </a> <jsp:include>動作元素使用<jsp:param>動作元素傳遞參數,如下所示: <jsp:include page="Ch7_2next.jsp“ flush="true"> <jsp:param name="Username" value="江小魚"/> <jsp:param name="Password“ value="5678"/> </jsp:include>

7-2 URL參數傳遞-方法2 <jsp:forward>動作元素使用<jsp:param>動作元素傳遞參數,如下所示: <jsp:forward page="Ch7_2next.jsp"> <jsp:param name="Username" value="張無忌"/> <jsp:param name="Password" value="9012"/> </jsp:forward> JSTL的<c:redirect>標籤也可以傳遞參數,使用<c:param>標籤建立這些參數,如下所示: <c:redirect url="Ch7_2next.jsp"> <c:param name="Username" value="小龍女"/> <c:param name="Password" value="7890"/> </c:redirect> HTML表單使用GET方法,詳細的說明請參閱下一節。

7-2 URL參數傳遞-取得URL傳遞的參數值 在JSP程式是使用request物件的方法取得URL參數值,如下所示: username = request.getParameter("Username"); password = request.getParameter("Password"); 上述程式碼取得參數名稱是Username和Password的值。

7-3 HTML表單欄位處理 7-3-1 HTML表單的用途 7-3-2 HTML標籤建立網頁表單 7-3-3 文字方塊與密碼欄位 7-3-4 文字區域 7-3-5 核取方塊 7-3-6 下拉式清單方塊 7-3-7 選擇鈕 7-3-8 隱藏欄位 7-3-9 同名與複選的表單欄位處理

7-3-1 HTML表單的用途 JSP程式是在伺服端執行,換句話說,客戶端的HTML表單只是負責取得使用者輸入的資料,然後將輸入資料送到伺服端進行處理,如下圖所示:

7-3-2 HTML標籤建立網頁表單-說明 在HTML標籤關於HTML表單的標籤只有5個,如下表所示:

7-3-2 HTML標籤建立網頁表單-架構 網頁表單是上表HTML標籤的組合,基本表單的架構如下所示: <form name="name" method="post | get" action="URL" enctype="MIME"> <input type=…> <textarea> …. </textarea> <select> <option> …. </option> </select> <input type="submit" …> </form>

7-3-2 HTML標籤建立網頁表單-屬性說明 name屬性:表單名稱。 method屬性:設定資料送出方式,主要是針對伺服端處理,GET方法(不分大小寫)就是URL網址的參數傳遞,請處理方式和上一節相同,POST方法是使用HTTP通訊協定的標頭來傳遞欄位資料,如下所示: <form name="order" method="post"> </form> action屬性:設定JSP表單處理程式所在的路徑,也可以是URL網址,如下所示: <form name="order" method="post" action="Ch7_3_3.jsp"> enctype屬性:設定表單資料傳送時的編碼方式,預設使用application/x-www-form-urlencoded,除非使用在上傳檔案,否則並不用設定此屬性。

7-3-3 文字方塊與密碼欄位-表單欄位 文字方塊是使用最頻繁的表單欄位,因為它是直接傳遞使用者輸入的資料,例如:姓名、地址、電話等資料;密碼欄位只是輸入的字串以指定符號取代,在使用上和文字方塊並沒有什麼不同。

7-3-3 文字方塊與密碼欄位-取得欄位值 在JSP程式是使用request物件的getParameter()方法,如下所示: name = request.getParameter("Name"); password= request.getParameter("Password"); 上述程式碼取得參數名稱是Name和Password的值。在JSTL是使用param隱含物件來取得參數值,表單欄位就是物件屬性,如下所示: ${param.Username} ${param.Password}

7-3-4 文字區域-表單欄位 文字區域和文字方塊都可以讓使用者輸入資料,其輸入的資料是完整段落或整篇文字,特別適合在地址、描述或備註等文字內容。

7-3-4 文字區域-取得欄位值 在JSP程式取得文字區域欄位內容,如下所示: address = request.getParameter("Address"); out.print(address.replaceAll("\r\n","<br>")); 上述程式碼取得名為Address文字區域的內容,如果有換行,我們可以使用String物件的replaceAll()方法,將換行符號取代成<br>標籤。 在JSTL是使用param隱含物件來取得參數值,表單欄位就是物件屬性,如下所示: ${param.Address}

7-3-5 核取方塊-表單欄位 核取方塊是一個開關,可以讓使用者選擇是否開啟指定功能或設定某些參數,核取方塊欄位能夠複選,因為每一個都是獨立的開關。

7-3-5 核取方塊-取得欄位值 核取方塊在表單欄位扮演的角色是一個開關,JSP程式取得核取方塊欄位內容是檢查是否是null,以判斷是否勾選,如下所示: if (request.getParameter("Tel") != null) { out.print("使用電話來確認<br>"); } 在JSTL是使用param隱含物件來取得參數值,如下所示: <c:if test="${not empty param.Tel}"> 使用電話來確認<br> </c:if>

7-3-6 下拉式清單方塊-表單欄位 下拉式清單方塊和第7-3-7節選擇鈕的功能十分相似,都是選擇題,只不過以不同方式來顯示,而且下拉式清單方塊支援複選。

7-3-6 下拉式清單方塊-取得欄位值 JSP程式是使用request物件的getParameter()方法取得下拉式清單方塊各選項的value屬性值,如下所示: int ship = Integer.parseInt(request.getParameter("Ship")); 在JSTL是使用param隱含物件來取得參數值,表單欄位就是物件屬性,如下所示: <c:set var="ship" value="${param.Ship}"/>

7-3-7 選擇鈕-表單欄位 選擇鈕能夠在表單設計一組選項,在每一個選項名稱旁有一個圓形的選項鈕,建立多選一的單選題。

7-3-7 選擇鈕-取得欄位值 在JSP程式和JSTL是使用和下拉式清單方塊相同的方法來取得使用者的選擇。

7-3-8 隱藏欄位-HTML標籤 隱藏欄位並不會在表單網頁顯示輸入介面,它是直接將value屬性值傳送到伺服器,所以並不需要使用者輸入資料或進行選擇。 在HTML表單加上隱藏欄位的目的,就是將資料傳遞到Web伺服器,在JSP程式常常用來傳遞一些應用程式所需參數,例如:訂單號碼,或將上一步驟的欄位值傳到下一步驟的表單網頁。隱藏欄位的HTML標籤,如下所示: <input type="HIDDEN" name="Order" value="Order0001">

7-3-8 隱藏欄位-取得欄位值 JSP程式是使用與文字方塊相同的方式來取得欄位值,如下所示: <% order = request.getParameter("Order"); %> <c:out value="${param.Order}" default="無編號"/>

7-3-9 同名與複選的表單欄位處理-說明 在HTML表單的欄位名稱可能同名,而且下拉式清單方塊允許複選,此時JSP程式是使用request物件的getParameterValues()方法,如下所示:

7-3-9 同名與複選的表單欄位處理-取得欄位值1 JSP程式是使用request物件的getParameterValues()方法取得選擇的字串陣列,如下所示: String[] langs = request.getParameterValues("Languages"); for ( int i = 0; i < langs.length; i++ ) out.print("[" + langs[i] + "]");

7-3-9 同名與複選的表單欄位處理-取得欄位值2 在JSTL處理同名與複選表單欄位是使用paramValues隱含物件來取得欄位值或選項,如下所示: <c:forEach var="gift" items="${paramValues.Gifts}"> [<c:out value="${gift}"/>] </c:forEach>

7-4 HTML表單欄位驗證 7-4-1 網頁表單欄位的驗證方式 7-4-2 伺服端的表單欄位驗證

7-4-1 網頁表單欄位的驗證方式 在網頁表單欄位的驗證過程中,可以在兩個地方進行把關,如下所示: 客戶端表單欄位驗證:客戶端欄位驗證是指在尚未送到伺服端前,在客戶端的瀏覽程式進行檢查,目前來說,主要是使用JavaScript或VBScript等腳本語言進行表單欄位檢查。 伺服端表單欄位驗證:相對於客戶端的欄位驗證,伺服端的表單欄位驗證是在資料送到伺服端後,才進行資料檢查,也就是使用JSP程式碼進行欄位檢查。

7-4-2 伺服端的表單欄位驗證-說明 JSP程式在取得表單欄位值後,在真正處理前,可以使用if或JSTL的<c:if>標籤等條件敘述來檢查使用者輸入的欄位資料是否正確,或是忘了輸入指定的欄位資料。 如果輸入的資料錯誤,JSP程式並不會進行處理,而是顯示錯誤訊息,然後回到表單網頁要求使用者重新輸入。

7-4-2 伺服端的表單欄位驗證-圖例

7-5 Cookie處理 7-5-1 新增Cookie 7-5-2 取得Cookie值 7-5-3 刪除Cookie值

7-5 Cookie處理 Cookies的英文意義是小餅乾,源於這些儲存在客戶端電腦的檔案尺寸都很小(1KB左右),Cookies是儲存在瀏覽程式所在電腦,而不是伺服端,所以並不會浪費伺服器資源,其目的是記錄一些與使用者相關的瀏覽資訊。

7-5-1 新增Cookie-建立Cookie 在瀏覽程式的客戶端電腦建立Cookie需要在JSP程式建立Cookie物件,如下所示: Cookie newCookie = new Cookie("name", value); 上述程式碼建立名為name的Cookie物件,其值為value。 接著我們需要設定Cookie存在期限的壽命,如下所示: newCookie.setMaxAge(3000);

7-5-1 新增Cookie-Cookie物件的方法

7-5-1 新增Cookie-新增Cookie 最後請使用response隱含物件的addCookie()方法來新增Cookie到客戶端電腦,如下所示: response.addCookie(newCookie); 上述addCookie()方法的參數是Cookie物件。

7-5-2 取得Cookie值-JSP 當客戶端電腦已經儲存有Cookie時,JSP程式可以使用request隱含物件的getCookies()方法取得Cookie的物件陣列,如下所示: Cookie[] cookies = request.getCookies(); 取得Cookie物件陣列後可以使用for迴圈顯示每一個Cookie的名稱和值,如下所示: for ( int i = 0; i < cookies.length; i++ ) { Cookie myCookie = cookies[i]; String name = myCookie.getName(); String value = myCookie.getValue(); …… }

7-5-2 取得Cookie值-JSTL 在JSTL是使用cookie物件來取得Cookie,可以配合<c:forEach>迴圈標籤來顯示所有的Cookie名稱和值,如下所示: <c:forEach var="item" items="${cookie}"> Cookie名稱 : ${item.key} / 值 : ${item.value.value}<br> </c:forEach>

7-5-3 刪除Cookie值 Cookie物件在setMaxAge()方法設定的期限到時,就會自動刪除Cookie,不過,在JSP程式可以使用同一個方法來馬上刪除Cookie,如下所示: myCookie.setMaxAge(0); response.addCookie(myCookie);

7-6 取得HTTP標頭和系統環境變數 7-6-1 取得HTTP標頭資訊 7-6-2 取得系統環境變數

7-6-1 取得HTTP標頭資訊-方法 HTTP請求的標頭(HTTP Request Header)資訊,可以提供客戶端請求和伺服器的相關資訊。在JSP是屬於HttpServletRequest介面的方法,如下表所示:

7-6-1 取得HTTP標頭資訊-標頭名稱 HTTP常見的標頭資訊名稱和說明,如下表所示:

7-6-2 取得系統環境變數