这几天被一个传值问题搞得晕头转向,在懵了几天之后终于把它kill掉了。
先说一下我的需求:
我需要提交一个form表单里的数据,然后又想附加一个flag=2的参数。
最初想到get,但是只能在地址栏上加参数,无法做到传个表单里的多个数据,
所以只能用post ,在表单的action属性上加了参数:
<form name="form1" method="post" action="food?flag=2">
于是,就看地址栏的变化,只有这个:
http://localhost:8080/wxtest/food?flag=2还以为没传过去(老看地址栏干嘛啊),其实是以post方式提交表单,参数分为两部分:一部分是action中的参数放在地址栏;另一部分是表单中的参数放在请求的头中;所以所有的数据后台全部能获得!!! 然后只需要在servlet中用 req.getParameter("m1"); 解析过来就可以插入到数据库了。
=====================================================================================
二、当我写成get方式的时候:
<form name="form1" method="get" action="food?flag=2">
地址栏是这样的:也就是说,我的flag并没有传过去!
http://localhost:8080/wxtest/food?id=55&date=123&class=ww&m1=w&m2=w&m3=w&m4=w&m5=w&Submit1=%C8%B7%B6%A8+
也就是说method为get时action自己后边带的参数列表会被忽视,,后台无法接收到这个参数,只能得到表单中的参数;
也就是说:
如果用get方法提交,后台无法接收到这个参数;
如果用post方法提交,后台就可以接收到这个参数。
结论:对get,post还是不够了解,只知道一个安全一个不安全,对自己呵呵!!!
另,感谢 1.form表单中method的get和post区别
另外js也可以获取表单数据然后传过去:js获取form表单所有数据