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)

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

HTML、CSS和JavaScript在Web開發中的作用分別是:1.HTML定義網頁結構,2.CSS控製網頁樣式,3.JavaScript添加動態行為。它們共同構建了現代網站的框架、美觀和交互性。

HTML的未來趨勢是語義化和Web組件,CSS的未來趨勢是CSS-in-JS和CSSHoudini,JavaScript的未來趨勢是WebAssembly和Serverless。 1.HTML的語義化提高可訪問性和SEO效果,Web組件提升開發效率但需注意瀏覽器兼容性。 2.CSS-in-JS增強樣式管理靈活性但可能增大文件體積,CSSHoudini允許直接操作CSS渲染。 3.WebAssembly優化瀏覽器應用性能但學習曲線陡,Serverless簡化開發但需優化冷啟動問題。

HTML的未來充滿了無限可能。 1)新功能和標準將包括更多的語義化標籤和WebComponents的普及。 2)網頁設計趨勢將繼續向響應式和無障礙設計發展。 3)性能優化將通過響應式圖片加載和延遲加載技術提升用戶體驗。

HTML、CSS和JavaScript在網頁開發中的角色分別是:HTML負責內容結構,CSS負責樣式,JavaScript負責動態行為。 1.HTML通過標籤定義網頁結構和內容,確保語義化。 2.CSS通過選擇器和屬性控製網頁樣式,使其美觀易讀。 3.JavaScript通過腳本控製網頁行為,實現動態和交互功能。

HTML是構建網頁結構的基石。 1.HTML定義內容結構和語義,使用、、等標籤。 2.提供語義化標記,如、、等,提升SEO效果。 3.通過標籤實現用戶交互,需注意表單驗證。 4.使用、等高級元素結合JavaScript實現動態效果。 5.常見錯誤包括標籤未閉合和屬性值未加引號,需使用驗證工具。 6.優化策略包括減少HTTP請求、壓縮HTML、使用語義化標籤等。

HTML、CSS和JavaScript是構建現代網頁的核心技術:1.HTML定義網頁結構,2.CSS負責網頁外觀,3.JavaScript提供網頁動態和交互性,它們共同作用,打造出用戶體驗良好的網站。

HTMLISNOTAPROGRAMMENGUAGE; ITISAMARKUMARKUPLAGUAGE.1)htmlStructures andFormatSwebContentusingtags.2)itworkswithcsssforstylingandjavascript for Interactivity,增強WebevebDevelopment。
