1. 程式人生 > >表單中多個請求引數名字相同,伺服器到底獲取的是哪個請求引數的值,表單的action和get和post提交方式的關係以及提交資料的不同點

表單中多個請求引數名字相同,伺服器到底獲取的是哪個請求引數的值,表單的action和get和post提交方式的關係以及提交資料的不同點

直接看程式碼和截圖吧,程式碼中有註釋,還有文字說明!

表單get提交和post提交,一個很大的不同點大家都應該知道,post提交,瀏覽器位址列中不會明文顯示,而get提交,瀏覽器位址列中會明文顯示,這不是我們今天討論的重點!

今天討論的重點如下:

1.表單中如果有2個控制元件的name屬性的值相同,伺服器端獲取請求引數的時候,獲取到的是前面的那個請求引數(不信的話,可以用get方式提交表單,在瀏覽器位址列看下這2個名字相同的請求引數哪個在前,伺服器端拿到的就是前面的那個請求引數)

2.表單的action中帶了請求引數的話,post方式會提交action中的請求引數,get方式不會提交action中的請求引數

3.當表單的action中帶的請求引數名稱和表單中的控制元件的name屬性的值一樣時,如果是post提交表單的話,伺服器端獲取到的是action中帶的請求引數,如果是get提交表單的話,那麼伺服器端獲取到的是表單中的控制元件(原因參考第2點,表單的action中帶了請求引數的話,post會提交action中的請求引數,get不會提交action中的請求引數,所以如果是get提交表單的話,伺服器端自然是獲取到的是表單中的控制元件中的值)

testForm.jsp

<%@ page language="java" contentType="text/html; charset=utf-8"
	pageEncoding="utf-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>測試表單的action的get和post方式提交資料的不同,以及測試多個請求引數同名,伺服器到底獲取的是哪個請求引數的值</title>
<link rel="stylesheet" type="text/css"
	href="${pageContext.request.contextPath}/body.css">
<link rel="stylesheet" type="text/css"
	href="${pageContext.request.contextPath}/mark.css">
<link rel="stylesheet" type="text/css"
	href="${pageContext.request.contextPath}/input2.css">
</head>
<body onload="showFormInfo()">
	<center>
		<h2>
			<font color="red">測試表單的action的get和post方式提交資料的不同,以及測試多個請求引數同名,伺服器到底獲取的是哪個請求引數的值</font>
		</h2>
		<div style="height: 90px;" class="testDiv3" id="showFormInfo"></div><br>
		<form id="testForm" action="${pageContext.request.contextPath}/TestForm?onlineName=jerry&workCity=beijing&money=19999&money=36888" method="post">
			使用者名稱:<input type="text" name="userName" value="令狐沖">
			<br> 年齡:<input type="text" name="age" value="23">
			<br> 工作城市:<input type="text" name="workCity" value="深圳">
			<br> 老家城市:<input type="text" name="hometown" value="江西省贛州市於都縣">
			<br> 薪水:<input type="text" name="money" value="28500">
			<br>
			員工編號2:<input type="text" name="employeeNumber" value="6688"><br>
			員工編號:<input type="text" name="employeeNumber" value="9527"><br>
			<br> <input type="submit" value="submit按鈕提交到伺服器端"> <input id="postToServerButton"
				type="button" onclick="postToServer()"> <input id="getToServerButton" type="button" onclick="getToServer()"><br><br> <input type="reset"
				value="(重置按鈕)本質不是清空控制元件中的值,而是還原控制元件中的值">
		</form>
	</center>
</body>
<script type="text/javascript">
	
	//顯示錶單的資訊
	function showFormInfo() {
		var formNode = document.getElementById("testForm");
		var message1 = "表單的action=";
		var message2 = "表單的method提交方式=";
		document.getElementById("showFormInfo").innerHTML = message1
				+ formNode.action + "<br>" + message2 + formNode.method;
		var postButton = document.getElementById("postToServerButton");
		postButton.value = "普通按鈕" + "post" + "提交至伺服器" + formNode.action;
		var getButton = document.getElementById("getToServerButton");
		getButton.value = "普通按鈕" + "get" + "提交至伺服器" + formNode.action;
	}
	
	/*
		表單post方式提交到伺服器端
	*/
	function postToServer(){
		var formNode = document.getElementById("testForm");
		formNode.method = "post";
		formNode.submit();
	}
	
	/*
		表單get方式提交到伺服器端
	*/
	function getToServer(){
		var formNode = document.getElementById("testForm");
		formNode.method = "get";
		formNode.submit();
	}
	
</script>
</html>

TestForm.java

package com.jiongmeng.servlet;

import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * 
 * 測試表單的action的get和post方式提交資料的不同,以及測試多個請求參
 * 數同名,伺服器到底獲取的是哪個請求引數的值
 * 
 */
@WebServlet("/TestForm")
public class TestForm extends HttpServlet {
	private static final long serialVersionUID = 1L;
       
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		//使用者名稱
		String userName = request.getParameter("userName");
		//網名
		String onlineName = request.getParameter("onlineName");
		//年齡
		String age = request.getParameter("age");
		//工作城市
		String workCity = request.getParameter("workCity");
		//老家城市
		String hometown = request.getParameter("hometown");
		//薪水
		String money = request.getParameter("money");
		//員工編號
		String employeeNumber = request.getParameter("employeeNumber");
		System.out.println("使用者名稱=" + userName + "網名=" + onlineName + "年齡=" + age + "工作城市=" + workCity + "家鄉=" + hometown + "薪水=" + money + "員工編號=" + employeeNumber);
		request.getRequestDispatcher("/jsp/form/showFormData.jsp").forward(request, response);
	
	}

	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		//解決中文亂碼的問題(我們這個專案中的web.xml配置了中文亂碼的過濾器處理中文亂碼的問題)
		//2個注意 (1.只對post有效,所以該行程式碼放在doGet方法中沒有任何意義 2.必須在request.getParameter()前設定,否則還是會亂碼,所以為了保險起見,以後就把該行程式碼放在第一行)
		//request.setCharacterEncoding("utf-8");
		System.out.println("*******************我是TestForm類中的doPost方法*******************");
		doGet(request, response);
	}

}


showFormData.jsp

<%@ page language="java" contentType="text/html; charset=utf-8"
	pageEncoding="utf-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>測試表單的action的get和post方式提交資料的不同,以及測試多個請求引數同名,伺服器到底獲取的是哪個請求引數的值</title>
<link rel="stylesheet" type="text/css"
	href="${pageContext.request.contextPath}/body.css">
<link rel="stylesheet" type="text/css"
	href="${pageContext.request.contextPath}/mark.css">
<link rel="stylesheet" type="text/css"
	href="${pageContext.request.contextPath}/input2.css">
</head>
<body>
	<center>
		<h2>
			<font color="red">測試表單的action的get和post方式提交資料的不同,以及測試多個請求引數同名,伺服器到底獲取的是哪個請求引數的值</font>
		</h2>
		<h2>顯示從testForm.jsp頁面中的表單中提交過來的資料</h2>
		使用者名稱:<font color="red">${param.userName}</font><br>
		網名:<font color="red">${param.onlineName}</font><br>
		年齡:<font color="red">${param.age}</font><br>
		工作城市:<font color="red">${param.workCity}</font><br>
		老家城市:<font color="red">${param.hometown}</font><br>
		薪水:<font color="red">${param.money}</font><br>
		員工編號:<font color="red">${param.employeeNumber}</font><br>
		<br>
		<br>
		<br>
		<div class="testDiv2" style="width: 100%;">
		<h3>
		<font color="blue">
		表單get提交和post提交,一個很大的不同點大家都應該知道,post提交,瀏覽器位址列中不會明文顯示,而get提交,瀏覽器位址列中會明文顯示,這不
		是我們今天討論的重點!
		</font>
		</h3>
		<h3><font color="red">今天討論的重點如下:</font></h3>
		<font color="#A52A2A">
		1.表單中如果有2個控制元件的name相同,伺服器端獲取請求引數的時候,獲取到的是前面的那個請求引數(不信的話,可
		以用get方式提交表單,在瀏覽器位址列看下這2個名字相同的請求引數哪個在前,伺服器端拿到的就是前面的那個請求引數)<br>
		</font>
		2.表單的action中帶了請求引數的話,post會提交action中的請求引數,get不會提交action中的請求引數<br>
		<font color="#000000">
		3.當表單的action中帶的請求引數名稱和表單中的控制元件的name屬性的值一樣時,如果是post提交表單的話,服
		務器端獲取到的是action中帶的請求引數,如果是get提交表單的話,那麼伺服器端獲取到的是表單中的控制元件(原因參考第2點,表
		單的action中帶了請求引數的話,post會提交action中的請求引數,get不會提交action中的請求引數,所以如果是get提
		交表單的話,伺服器端自然是獲取到的是表單中的控制元件中的值)<br>
		</font>
		</div>
	</center>
</body>
</html>

相關推薦

請求引數名字相同伺服器到底獲取的是哪個請求引數的值actiongetpost提交方式關係以及提交資料不同點

直接看程式碼和截圖吧,程式碼中有註釋,還有文字說明!表單get提交和post提交,一個很大的不同點大家都應該知道,post提交,瀏覽器位址列中不會明文顯示,而get提交,瀏覽器位址列中會明文顯示,這不是我們今天討論的重點!今天討論的重點如下:1.表單中如果有2個控制元件的na

formbutton按鈕必須聲明type類型

orm 管理系 多個 分享 com 圖片 log bmi 一個 最近在做一個後臺管理系統,發現了一個小bug: 問題描述:form表單中有多個button按鈕(以下圖為例),如果第一個button不寫type屬性,那麽點擊第一個button按鈕會觸發submit事件; 解決

一個按鈕實現不同功能

每個按鈕提交實現不同的功能 在模組中有2個提交按鈕,如下: form action="" method="post"> …… <input type="submit" name="install" value="安裝"> …… <i

listmap的key相同的value相加

將多個map中key相同的value值相加合併成一個map 先將多個map放一個list中 result資料: [{"town":7,"district":6,"village":23}, {"town":7,"district":6,"village":23}

tomcat專案(web專案)共用log4j.jar的情況下如何讓其各自列印各自的日誌檔案。及輸出同級別日誌資訊

問題描述: 1.專案A中有一個log4j.properties(配置為把日誌輸出到以專案名稱命名的資料夾中)  2.為了減輕tomcat負擔,把專案A的WEB-INF/lib下的所有jar檔案拷貝到tomcat下的lib中並修改catalina.properties對其載入

hql語句一次比對查詢字段

end nta 不能 ase color poll 存儲 pen ike 前端輸入客戶名稱,在使用hql查詢時,要同時比對表中,客戶名稱,客戶簡稱,拼音簡寫,客戶編碼等多個字段 hql寫法 String fdCustomerName=cv.poll("docMain.fdC

element UI el-form 包含 el-input 時的校驗方法

這一點element-ui真是有點死板,我是這樣解決的,有兩個情況,prop可以只繫結第一個input的,第二個input寫上ref屬性,驗證的rules中寫一個方法,這個方法驗證第一個input框的同時,通過 this.$refs.xxx.value的形式獲取第二個input框值,只要這兩

struts2一個Form配置action實現原理及案例

一、原理說明 以登入註冊為例 login.jsp:Form表單中包含登入、註冊兩個按鈕。登入按鈕配置LoginAction.java,註冊按鈕配置RegistAction.java <%@ page language="java" content

OGG進程拆分(拆成進程)

byte utf 主機 al32utf8 spa pup epo 同時 edi OGG進程拆分(單表拆成多個進程) 概要: 《OGG進程拆分》介紹了如何將一個入庫進程中的多個表拆分到其他進程中。本篇將著重介紹如何使用多個進程同時入庫一張表。 適用條件: 1)入庫進程只同

git配置出現重復名字:More than one value for the key user.name

for val config repl -s user nvic -c 區域 #### 查看配置```git config --list``` #### 查看所有的名稱```git config --get-all user.name``` #### 查

Form傳遞值傳遞List陣列物件的解決方法之一

一開始想的是用   $("#inputForm").serializeArray() 序列化生成物件 後端   @RequestBody List<PositionType> positionTypeList  獲取到資

Java不使用陣列時傳入可變引數

JDK1.5之後   Public static void main(String[] args) { Demo(); Demo(1,2,3); } public void Demo(int a,int b,int...array)//放最後,只能一個 {

按鈕進行操作不需要跳轉頁面的實現

有一個通用的需求,就是在一張表格中對一條記錄進行多種操作,計劃採取ajax非同步方式的操縱資料庫。 主檢視: <td> <div class="btn-group btn-group-sm">

androidWebview設定cookie引數

有時候需要在cookie中設定多個引數傳遞給前端頁面,常用的是 token和渠道號 。將N個引數的key-value按照分號分開然後一次設定,一直只使用token第一個引數,可以正常獲取,所以沒問題,比如 StringBuilder sbCookie = n

PrepareStatement sql語句in引數的實現

下邊是今天探索PrepareStatement預編譯where條件為in的sql語句的過程,在mysql環境中只有第四種方法實現了,Oracle中可能第三種也可以不過沒有測試,如果有需要可以直接跳轉。 1.通過拼接字串設定引數× 今天在實現一個數據庫批量更新

語句的刪除(欄位)

1、查詢表中多餘的重複記錄,重複記錄是根據單個欄位(Id)來判斷   select * from 表 where Id in (select Id from 表 group byId having c

spring mvc的controller識別同一個formsubmit按鈕問題以及相關處理

          之前只寫過spring mvc的controller處理form表單中一個submit的程式碼,今天遇到了form表單中存在多個submit,然後自己百度了一下,找到了解決方案,不過又出現了其他錯誤,現在來總結一下。 sp

Hibernate的annotation的寫法(中間可以有欄位)

一般情況下,多對多的關聯關係是需要中間表的; 情況一:如果中間表僅僅是做關聯用的,它裡面僅有2個外來鍵做聯合主鍵,則使用ManyToMany(不用寫中間表的Model,只需要寫出兩張主表的model即可) 學生表 @Entity@Table(name = "T_STUDENT")@SequenceGener

IOS網路請求問題

在多執行緒中,有時候我們會遇到一個介面同時有多個網路請求(比如a,b,c,d四個網路請求),在這四個個請求結束後,在請求到資料去做其他操作(UI更新等) 在IOS的多執行緒解決方案中,GCD為我們提供了一種解決方案:dispatch_group 和訊號量 //建立訊號

SqlServer查詢同一張欄位相同的記錄

SELECT   *    FROM     TABLEName SA             INNER JOIN ( C1 ,                                 C2                          FROM   TABL