HTTP協定基本的兩個請求方式為GET與POST,GET請求方式為直接在請求的網址上發送請求的相關資訊,例如:
GET請求方式由於是直接在網址上發送請求的相關資訊,所以會在網址列上出現相關的請求資訊,例如: http://localhost:8080/myjsp/login.jsp?user=justin
使用GET來發送請求會曝露一些請求的相關資訊,使用GET的時機之一是用在可bookmark的網址資訊上,然而對於大量的資訊傳送而言,會在網址列上出現一長串內容,而且GET請求有最長資料長度 255個字元的限制,所以對於需要保密的資訊而言,例如使用者登入,或是對於大量資訊傳送而言,例如留言訊息,通常會採用POST來發送請求,POST請求主要是在HTTP協議之後,將資料附加在請求的後端,有些類似SMTP的郵件發送,例如:
在設計表單的時候,可以指定發送請求的方式為GET或POST,表單的標籤設定一開始是這樣的: <form name="info" method="GET" action="somepage.jsp">
<!-- 表單控制項 --> <input type="控制項型態"> </form> 其中method用來指定發送請求的方式為GET或POST,而action用來指定請求的目標,請求的目標可以是JSP、ASP、PHP、CGI程式等等,表單控制項將在以下介紹幾個常用的。 首先是送出按鈕submit與重清按鈕reset,要將表單的內容發送出去,至少一定要使用submit按鈕,按鈕的value值可以設定按鈕上的文字,例如: <form name="info" method="GET" action="somepage.jsp">
<!-- 送出與重清 --> <input type="submit" value="送出"> <input type="reset" value="清除"> </form> 本文框text與密碼輸入框password的外觀是差不多的,差別在於密碼輸入框會使用字元遮罩來隱藏輸入的字元,設定的例子如下: <form name="info" method="GET" action="somepage.jsp">
<!-- 本文框與密碼輸入 --> Login ID: <input type="text" name="id"> Password: <input type="password" name="pwd"> <!-- 送出與重清 --> <input type="submit" value="送出"> <input type="reset" value="清除"> </form> name屬性即在JSP網頁中可以用來取得請求參數的名稱,另外還可以使用maxlength設定欄位最大輸入字元,size可以設定框的大小,而value可以用來設定預設輸入內容,可以設計一個JSP網頁來測試這個表單的運作: <%
// id 即 text 中設定的name屬性 String name = request.getParameter("id"); // pwd 即 password 中設定的 name 屬性 String password = request.getParameter("pwd"); out.println("接收參數:" + name + ", " + password); %> 當然要記得,表單是必須在HTML網頁中才能運作的,記得使用<html>標籤: <html>
<body> <form name="login" method="GET" action="login.jsp"> <!-- 本文框與密碼輸入 --> Login ID: <input="text" name="id"> Password: <input="password" name="pwd"> <!-- 送出與重清 --> <input type="submit" value="送出"> <input type="reset" value="清除"> </form> </body> </html> 輸入內容並按下送出鍵之後,由於是使用GET方法,您可以在網址看到相關的資訊: http://localhost:8080/myjsp/login.jsp?id=justin&pwd=1234
可以看到的多個參數同時發送時,使用&符號來聯結。 單選鈕radio與核取方塊checkbox常用於提供固定的選項給使用者點選,它們都擁有checked屬性表示選取,name屬性表示按鈕名稱, value發送出去的值,即request.getParameterValues("name")所取得的值,例如: <html>
<body> <form name="info" method="POST" action="info.jsp"> <!-- 單選鈕 --> <input type="radio" name="sex" value="male" checked>男 <input type="radio" name="sex" value="female">女<br> <!-- 核取方塊 --> <input type="checkbox" name="skills" value="c++">C++<br> <input type="checkbox" name="skills" value="java"> Java<br> <input type="checkbox" name="skills" value="c#">C#<br> <!-- 送出與重清 --> <input type="submit" value="送出"> <input type="reset" value="清除"> </form> </body> </html> 表單發送方式設定為POST,如此發送的資訊就不會出現在網址列上;單選鈕的name設定為相同的話,表示屬於同一個群組,一次只能選擇一個項目,而核取 方塊的name設定,其值可以使用request.getParameters()取得,例如設計下面的程式來取得資訊: <%
String sex = request.getParameter("sex"); String[] skills = request.getParameterValues("skills"); out.println("性別:" + sex); out.println("技能:"); for(int i = 0; i < skills.length; i++) { out.println(skills[i] + ", "); } %> 下拉式選單也是一個常用的輸入型態,由於將選項以下拉式選單來表現,可以節省網頁排版的空間,適用於大量選項可以選擇的場合,一個例子如下: <form name="info" method="POST" action="info.jsp">
<!-- 下拉選單 --> <select name="salary" multiple> <option value="L1">20000以下</option> <option value="L2">20000 ~ 30000</option> <option value="L3">30000 ~ 40000</option> </select> <!-- 送出與重清 --> <input type="submit" value="送出"> <input type="reset" value="清除"> </form> 取得下拉式選單設定值的方法,同樣是使用getParameterValues(),另外下拉式選單也可以使用multiple設定為可複選,而 size 屬性可以用於設定欄位的大小。 最後,輸入型態中還有一個hidden型態,它不會在瀏覽器上顯示任何元件,但可以設定name與value,主要是用來隱藏一些資訊,在下一次發送請求時,一併將隱藏的資訊發送給伺服器。 |