1. 程式人生 > >form表單action提交問題詳解

form表單action提交問題詳解

https://yq.aliyun.com/ziliao/64915

form 提交action中引數無效


頁面通過表單(form)想伺服器提交資料的時候有兩種形式,一個是POST,另一個是GET。兩種的一個區別是GET會直接把資料附加在url的後面,而POST傳送的資料放置在http包中。form的action屬性就是提交資料的url地址,method屬性可以指定是GET或POST。

需要注意的是如果採用GET方式,那麼action url中引數都會被丟棄,提交時候只會把form中的資料拼接在url向伺服器提交;但是POST的方式則不會這樣,它會按照action指定的url進行提交資料,包含url後面跟著的引數和引數值


action提交路徑問題

我遇到的是Form表單提交到servelet處理時遇到的問題: 
(1)<form name="form1" action="①?" method=“②?”> 
      //表單的內容 
     </form>

(2)對應的處理使用者請求的servlet類為HelloServlet.java;


(3)配置web.xml檔案:

 程式碼如下複製程式碼

<servlet> 
<servlet-name>③servlet</servlet-name> 
<servlet-class>/HelloServlet</servlet-class> 
</servlet>

<servlet-mapping> 
<servlet-name>③servlet</servlet-name> 
<url-pattern>/①welcome</url-pattern> 
</servlet-mapping>

然後在login.jsp中應該是:

<form action="①welcome" method="②?">

這樣的話login.jsp的url是http://localhost:8080/jsp/login.jsp

而HelloServlet.java的url是http://localhost:8080/jsp/welcome

注:web.xml中③對應的兩個servlet-name要一致;①中的url-pattern要與form表單中的action屬性值一致。


form表單action重複提交


 在做一個jsp提交頁面時,資料莫名其妙提交2次,資料庫資料插入2次,開始只把注意力集中在提交到Servlet裡,做了很多測試,折騰半天,才測試出來:根本不是Servlet的問題!問題出在jsp頁面上。jsp頁面的提交事件導致自動提交了2次。
form表單的js判斷函式只返回false,忘記寫返回true,真是鬱悶死。就像下面這樣:

 程式碼如下複製程式碼
function check()
{
if(""==document.myform.name.value)
{//作業名稱
window.alert("請先填寫作業名稱!");
document.myform.name.focus();
$(".name").next().show();
return false; //離開函式
}   
}

提交按鈕 onclick="javascript:return(checkform());"
上面的check()函式由於缺少return true,導致form表單action重複提交2次。
搜尋一下,網上很多人遇到form表單action重複提交2次的問題,原因都是大同小異:
如下
1.

 程式碼如下複製程式碼
(1)<input type="submit" value="tijiao" onclick="return checkField();"/>或者圖片<input type="image" src="../images/btn-login.gif" alt="Login" class="btn-login" onclick="return checkField();"/>   
(2)if(usernameValue !== "" && passwordValue !== ""){   
                   
        //document.getElementById("loginForm").submit(); 如果寫了這行就提交了2次。     
        return true;   
}

2.jsp頁面有些連結地址是""
如:

 程式碼如下複製程式碼
<img src="" />
<link type="text/css" href=""/>" rel="stylesheet" />

主要就是連線不能為空。
3.
最近在做一個JAVA專案,發現在登陸頁面點選登陸之後都會執行2次ACTION的程式碼,跟蹤了2天終於找到問題的根源:
在登陸頁面LOGIN.JSP中,如果提交按鈕寫成如下的方式則會提交兩次:

 程式碼如下複製程式碼

<script type="text/JavaScript">
function loginFunc()
{
var form = document.getElementById("form1");
   form.submit();
}
</script>

<form action="processLogin.action" method="post" id="form1">
<s:textfield name="username" cssClass="input" style="width:150px;" value=""></s:textfield>
<s:password name="password" cssClass="input" style="width:150px;" value=""></s:password>
<input type="submit" onclick="loginSystem()"/>//問題出在這一行
</form>

submit型別本身就會提交到ACTION類;onclick方法中又呼叫了一次submit提交方法,所以導致執行了兩次ACTION的程式碼。

解決方式:

 程式碼如下複製程式碼
<input type="button" onclick="loginSystem()"/>

以上是雲棲社群小編為您精心準備的的內容,在雲棲社群的部落格、問答、公眾號、人物、課程等欄目也有的相關內容,歡迎繼續使用右上角搜尋按鈕進行搜尋servlet , 資料 , 函式 , 引數 , 程式碼 屬性 form表單提交action、form表單提交到action、js提交form表單action、form表單提交的action、form表單提交詳解,以便於您獲取更多的相關知識。