表单中多个请求参数名字相同,服务器到底获取的是哪个请求参数的值,表单的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 οnlοad="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" οnclick="postToServer()"> <input id="getToServerButton" type="button" οnclick="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>

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值