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-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"> <form action="processLogin.action" method="post" id="form1"> |
submit型別本身就會提交到ACTION類;onclick方法中又呼叫了一次submit提交方法,所以導致執行了兩次ACTION的程式碼。
解決方式:
程式碼如下 | 複製程式碼 |
<input type="button" onclick="loginSystem()"/> |
以上是雲棲社群小編為您精心準備的的內容,在雲棲社群的部落格、問答、公眾號、人物、課程等欄目也有的相關內容,歡迎繼續使用右上角搜尋按鈕進行搜尋servlet , 資料 , 函式 , 引數 , 程式碼 屬性 form表單提交action、form表單提交到action、js提交form表單action、form表單提交的action、form表單提交詳解,以便於您獲取更多的相關知識。