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