關於表單(Form)

HTTP協定基本的兩個請求方式為GETPOST,GET請求方式為直接在請求的網址上發送請求的相關資訊,例如:
 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>
 

其中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="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);
%>
 

當然要記得,表單是必須在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,主要是用來隱藏一些資訊,在下一次發送請求時,一併將隱藏的資訊發送給伺服器。
 
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值