form表單的各種input的submit傳值

1.       在服務器端獲取參數的時候,HttpServletRequest.getParameter(String name)方法的返回結果根據如下情況區分:

1.1   請求消息中不包含這個參數,返回null

1.2   請求消息中包含這個參數,但是沒有值。例如param1=&param2=123中的param1。這種情況下返回空字符串””

1.3   請求消息中包含多個命名相同的參數。例如param1=1&param1=2中的param1。這種情況下,返回第一個參數的值。例如上面的1。如果使用HttpServletRequest.getParameterValues(String name),則返回一個包含所有命名相同的值的Sring數組。

2.       <input type="submit" name=" " value=" ">

一個頁面中可以有多個submit元素,點擊某個submit按鈕的時候,瀏覽器會將form的數據封轉後發送給服務器,其中包括一對當前點擊的submit信息的數據,爲當前點擊submit按鈕的namevalue。其他不點擊的submit按鈕不傳遞namevalue值。

所以可以通過如下語句判斷點擊了那個submit按鈕。

if(req.getParameter("submit按鈕的name屬性") != null && req.getParameter("submit按鈕的name屬性").equals("submit按鈕的value屬性"))

       {

           執行語句

    }

如果某個submit按鈕沒有name屬性。點擊這個按鈕的時候,瀏覽器也會將form的數據封轉後發送給服務器,但是不包含submit按鈕本身的namevalue信息。所以服務器端不能判斷是點擊了哪個按鈕。

3.       <input type="button" name=" " value=" ">

點擊一個submit按鈕的時候,瀏覽器會自動提交數據到服務器,但是點擊一個Button的時候,瀏覽器只是單純的執行這個Buttononclick事件。如果沒有onclick事件,就什麼也不做。可以在onclick事件中通過JavaScript代碼提交表單。

例如:

function button1_click()

{

document.form1.action = “check.jsp”;

document.form1.submit();

}

點擊button按鈕不傳遞buttonnamevalue值。

4.       各種input的傳遞namevalue的情況:

前提是,只要沒有name屬性,就不傳遞。

texttextarea不管是否爲空,都將傳遞到服務器,爲空時傳遞的value值爲空字符串。

checkboxradio的狀況是,只有被選中的纔會傳遞,不選擇的不傳遞。如果選中了沒有valuecheckboxradio,傳遞的value值默認爲”on”

hidden不管如何,都會被傳遞給服務器。

5.       一個實踐

5.1   jsp頁面

<form action="<%=request.getContextPath()%>/checkboxtest"

                            method="post" target="_blank">

                            <table>

                                     <tr>

                                               <td>

                                                        <input type="checkbox" name="selectbooks" value="1">

                                               </td>

                                               <td>

                                                        1

                                               </td>

                                     </tr>

                                     <tr>

                                               <td>

                                                        <input type="checkbox" name="selectbooks" value="2">

                                               </td>

                                               <td>

                                                        2

                                               </td>

                                     </tr>

                                     <tr>

                                               <td>

                                                        <input type="checkbox" name="selectbooks" value="3">

                                               </td>

                                               <td>

                                                        3

                                               </td>

                                     </tr>

                                     <tr>

                                               <td>

                                                        <input type="submit" name="check" value="查看">

                                               </td>

                                               <td>

                                                        <input type="submit" name="delete" value="刪除">

                                               </td>

                                     </tr>

                            </table>

</form>

5.2   後臺Servlet代碼:

                   resp.setContentType("text/html;charset=UTF-8");

                   String[] selectBooks = req.getParameterValues("selectbooks");

                   StringBuffer selectBookIds = new StringBuffer();

                   int flag = 0;

                   for (String selectbook : selectBooks) {

                            if (flag == 0) {

                                     selectBookIds.append(selectbook);

                            }

                            else

                            {

                                     selectBookIds.append("," + selectbook);

                            }                

                            flag = 1;

                   }

 

                   if(req.getParameter("check") != null)

                   {

                            resp.getWriter().println("選擇的圖書的id有:" + selectBookIds.toString());

                   }

                   else if(req.getParameter("delete") != null)

                   {

                            resp.getWriter().println("刪除的圖書的id有:" + selectBookIds.toString());

                   }

                   else

                   {

                            resp.getWriter().println("返回的圖書的id有:" + selectBookIds.toString());

                   }

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章