簡述表單常用的兩種提交方式 表單提交方法由什么屬性決定?
表單提交方法由什么屬性決定?由form的method屬性決定,可以是post getform表單的get方法和post方法提交的數(shù)據(jù)如何接收?GET請求的數(shù)據(jù)會附在URL之后(就是把數(shù)據(jù)放置在HTTP
表單提交方法由什么屬性決定?
由form的method屬性決定,可以是post get
form表單的get方法和post方法提交的數(shù)據(jù)如何接收?
GET請求的數(shù)據(jù)會附在URL之后(就是把數(shù)據(jù)放置在HTTP協(xié)議頭中),以分割URL和傳輸數(shù)據(jù),參數(shù)之間以amp相連,如: POST是通過HTTP POST機制,將表單內(nèi)各個字段與其內(nèi)容放置在HTML HEADER內(nèi)一起傳送到ACTION屬性所指的URL地址。用戶看不到這個過程。
spring如何控制重復(fù)提交?
防止表單重復(fù)提交的兩種 1)通過重定向 采取請求轉(zhuǎn)發(fā)的完成表單內(nèi)容的添加會造成內(nèi)容的重復(fù)插入?! ‘?dāng)向Servlet發(fā)送一條增加記錄的請求后,servlet首先向數(shù)據(jù)庫增加一條記錄,然后又從數(shù)據(jù)庫中查詢出所有數(shù)據(jù),接著轉(zhuǎn)發(fā)到另一個頁面,這時,頁面上瀏覽器的地址顯示的是servlet的地址,當(dāng)用戶刷新頁面時,又會向servlet發(fā)送一條添加請求,這樣會導(dǎo)致數(shù)據(jù)庫中重復(fù)數(shù)據(jù)不斷增加?! 〗鉀Q辦法:采用重定向的添加數(shù)據(jù)不會導(dǎo)致數(shù)據(jù)的重復(fù)插入或刪除?! ∠騭ervlet發(fā)送一個添加請求時,這個servlet只執(zhí)行添加操作,然后重定向到另一個servlet進行數(shù)據(jù)的查詢,最后轉(zhuǎn)發(fā)到顯示頁面?! ?)通過Session Token(Session令牌) 當(dāng)客戶端第一次向服務(wù)器端發(fā)送請求的時候,服務(wù)器會通過Token標(biāo)簽,并且會將這個字符串放到session中,然后將這個字符串發(fā)送給客戶端,在提交之前頁面上就有了一個字符串,服務(wù)器端也有一個字符串,兩個字符串的內(nèi)容是一樣的,當(dāng)你提交的時候,服務(wù)器會比較兩個字符串是不是一樣的,如果是一樣的,就是第一次提交,并且更新服務(wù)器端的字符串;如果此時再次重復(fù)提交,服務(wù)器端的字符串已經(jīng)發(fā)生改變而頁面中的那個字符串還沒有變,這時,你提交的時候兩個字符串就不匹配了,服務(wù)器端就會認(rèn)為是第二次提交,這樣,服務(wù)器就不會再讓提交了,進而轉(zhuǎn)向那ltresultgt所指向的頁面。 其實就是第二次與第一次jsp頁面向服務(wù)器提交的內(nèi)容和第一次一模一樣,當(dāng)在瀏覽器上返回前一頁時,表單中提交的內(nèi)容和第一次也是易語言的,所以這種情況下提交也會失敗,當(dāng)返回前面一夜然后刷新,刷新相當(dāng)于向服務(wù)器發(fā)送了一次請求,所以這樣提交就可以成功。