Form.action傳值問題
透過瀏覽器網址列輸入url並透過?傳遞參數請求資源時,?後面的參數叫做"查詢字串",會觸發後台Servlet的doGet(),因為透過瀏覽器網址列直接存取的方式是GET方式。
下面順便了解一下form的method屬性對傳參的影響。
原始表單:
第一種情況:
上面表單的action屬性不寫時,直接點擊「提交」按鈕,會觸發表單的提交事件,此時,透過火狐瀏覽器的控制台可以發現:
訊息標頭中有以下關鍵訊息:(1)請求地址後面透過'?'傳遞參數(2)請求方式為GET

參數資訊: 查詢字串
指定form的method屬性時:
第二種情況:
訊息頭中有以下關鍵資訊:(1)請求地址後面沒有傳遞任何參數(2)請求方式為POST
參數資訊: 表單資料
上面兩種方式的對應都是刷新後顯示當前頁面,因為form沒有指定action屬性,預設提交的地址就是當前頁面。
現在透過指定action屬性存取Servlet來進一步了解method屬性。
TestServlet.java核心原始碼:
@WebServlet("/servlet/TestServlet")
public class TestServlet extends HttpServlet {
private static final long serialVerformati; request, HttpServletResponse response) throws ServletException , IOException {
response.getWriter().print("doGet()");
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.getWriter().print("doPost( )");
}
}
第三種情況:method="get" action="/test/servlet/TestServlet"
上面的訊息頭,參數和第一種情況是一樣的,不過後台回應了一個doGet().
第四種情況: method="post" action="/test/servlet/TestServlet"
上面的訊息頭,參數和第一種情況是一樣的,不過後台回應了一個doPost().
TestServlet.java 新增取得參數碼:
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletRequest request, HttpServletResponse response) throws Servletalception, 版本; getWriter().print ("doGet() get type="+param);
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOception {getpter ).print("doPost() get type="+param);
}
第五種情況,method="get" 在action後面傳參action = "/servlet/TestServlet?type=01",同時在後台Servlet中取得參數
此時瀏覽器網址列:http://localhost:8080/test/servlet/TestServlet?username=
可以發現,後台的doGet()是取得不到參數type的.
同時發現,type參數是沒有加入到「查詢字串」的
第六種情況,method="post" 在action後面傳參action = "/servlet/TestServlet?type=01",同時在後台Servlet中取得參數
可以發現,後台的doPost()是可以取得參數type的。
同時,參數一欄和以前有些不同:既有「查詢字串」又有「表單資料」
所以上面給我們一種啟示,就是通過?在form的action後面傳遞參數時,我們需要手動指定form的method="post",不然是獲取不到?後面的參數的;
思維迷思:之前我們在瀏覽器網址列透過url傳遞參數,也是通過?來實現的,它最終也是呼叫doGet()方式,所以我們就認為在的表單(預設method="get")中action後面可以通過?來傳參。
最終原因:(個人總結)get方式提交表單資料時,會重組url,它只會將form的表單資料組裝成“查詢字串”,提交到form的action中指定的url,所以原來通過?方式傳遞的參數是不會提交的,因為url重組了就丟失了。
但是post方式提交表單時,它會將表單資料和?後面的參數,分開保存,一起提交給form中action指定的url。
(參考資源)HTML Form: why action can't have get value in it?
http://stackoverflow.com/questions/3548795/html-form-why-action-cant-have-get-value-in -it

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

HTML適合初學者學習,因為它簡單易學且能快速看到成果。 1)HTML的學習曲線平緩,易於上手。 2)只需掌握基本標籤即可開始創建網頁。 3)靈活性高,可與CSS和JavaScript結合使用。 4)豐富的學習資源和現代工具支持學習過程。

HTML定義網頁結構,CSS負責樣式和佈局,JavaScript賦予動態交互。三者在網頁開發中各司其職,共同構建豐富多彩的網站。

WebDevelovermentReliesonHtml,CSS和JavaScript:1)HTMLStructuresContent,2)CSSStyleSIT和3)JavaScriptAddSstractivity,形成thebasisofmodernWebemodernWebExexperiences。

GiteePages靜態網站部署失敗:404錯誤排查與解決在使用Gitee...

AnexampleOfAstartingTaginHtmlis,beginSaparagraph.startingTagSareEssentialInhtmlastheyInitiateEllements,defiteTheeTheErtypes,andarecrucialforsstructuringwebpages wepages webpages andConstructingthedom。

實現圖片點擊後周圍圖片散開並放大效果許多網頁設計中,需要實現一種交互效果:點擊某張圖片,使其周圍的...

HTML、CSS和JavaScript是Web開發的三大支柱。 1.HTML定義網頁結構,使用標籤如、等。 2.CSS控製網頁樣式,使用選擇器和屬性如color、font-size等。 3.JavaScript實現動態效果和交互,通過事件監聽和DOM操作。

網頁批註功能的Y軸位置自適應算法本文將探討如何實現類似Word文檔的批註功能,特別是如何處理批註之間的間�...
