使用GET方式提交的表单遇到的问题
经常使用表单,一直使用的都是POST方式,POST将数据封装到请求体中,相对于GET安全一点;而POST处理中文编码问题也比GET简单(GET需要将URL编码,后台接受到后还需要解码)。今天我想要使用GET方式提交表单,却遇到了参数丢失的问题(姑且这样称呼这个问题吧),并不是GET方式表单提交的数据就会丢失,而是自己对表单理解的还不到位,使用错误。
一个GET方式提交的表单:
<form action="${pageContext.request.contextPath }/myServlet?name=lz" method="GET">
<input type="text" name="password"/>
<input type="submit" value="提交"/>
</form>
重点在于?号后面的name参数,我想当然的以为password的值会最加到后面,就如:
http://localhost:8888/11/myServlet?name=lz&password=123
但是事实上,真正的URL为:
http://localhost:8888/11/myServlet?password=123
没错,完全不管?号后面是否有值,直接将password追加到?号后面,所以我们在后台想要得到这个name的值,当然就得不到了。
而我们常用的POST方式会怎样呢?
将method改为POST之后,再次提交,可以发现提交的URL:
http://localhost:8888/11/myServlet?name=lz
而password参数封装在请求体中传给后台,所以后台既可以得到name的值,也可以得到password的值,都没有问题。
我们姑且将追加在?后面的参数称之为查询字符串,而将写在input中的值称之为表单数据。
注意:查询字符串不能使用GET方式的表单进行提交,想要提交可以使用隐藏域的方式(作为表单数据),而POST没有问题;表单数据不论使用哪种方式提交都是可以正确提交到后台的。
这个例子即使是比较极端的,但是如果有类似的需求还是需要注意一下。
既然这里说到表单,我再记录一下如何使用表单发PUT或者DELET类型的请求,其实表单只支持GET或POST的请求,其method的方法选项也只有这两种,如果我们使用RestFul风格的URl,就需要解决这个问题。
步骤:
1.在web.xml中配置HiddenHttpMethodFilter 这个Filter,其实就是这个Filter将POST请求转变为PUT或是DELET,其实在页面发的还是POST请求:
<!--配置将POST转换为PUT,DELETE的Filter -->
<filter>
<filter-name>HiddenHttpMethodFilter</filter-name>
<filter-class>org.springframework.web.filter.HiddenHttpMethodFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>HiddenHttpMethodFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
2.表单一定要使用POST请求,然后在表单中添加一个隐藏域:
<%-- 因为使用PUT提交,所以需要一个隐藏域name=_method --%>
<input type="hidden" name="_method" value="PUT"/>
隐藏域input的名应定要是_method,至此,就可以根据隐藏域value的值发出PUT或DELETE请求了。
使用GET方式提交的表单遇到的问题的更多相关文章
- 如何通过iframe以post方式提交form表单
以前用过一次这种技术,这次用居然忘了,现纪录下来,下次再用就来看看. 首先在html中需要准备好form和iframe元素代码如下: <form id="speaker_form&qu ...
- 如何通过submit提交form表单获取后台传来的返回值
版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/qq_34651764/article/details/76373846 小伙伴是不是遇到过这样的问题 ...
- formidable处理提交的表单或文件的简单介绍
一般来说,客户端向服务端提交数据有GET和POST这两种方式,在之前的文章node.js当中的http模块与url模块的简单介绍当中我们可以知道通过req.url与url模块的配合处理可以快速得到客户 ...
- formidable处理提交的表单或图片文件的简单介绍
一般来说,客户端向服务端提交数据有GET和POST这两种方式,在之前的文章node.js当中的http模块与url模块的简单介绍当中我们可以知道通过req.url与url模块的配合处理可以快速得到客户 ...
- Jquery通过Ajax方式来提交Form表单
今天刚好看到Jquery的ajax提交数据到服务器的方法,原文是: 保存数据到服务器,成功时显示信息. jQuery 代码: $.ajax({ type: "POST", url: ...
- jquery的ajax提交form表单方式总结
方法一: function AddHandlingFeeToRefund() { var AjaxURL= "../OrderManagement/AjaxModifyOrderServic ...
- jquery下的提交,点击按钮没反应,post方法不执行 JSON方式在FORM表单下不起作用
jquery下的提交,点击按钮没反应,post方法不执行 JSON方式在FORM表单下不起作用
- 通过jQuery的Ajax方式来提交Form表单
通过jQuery的Ajax方式来提交Form表单 $.ajax({ url:ajaxCallUrl, type:"POST", cache:true, async:false, d ...
- ajax提交form表单资料详细汇总
一.ajax提交form表单和不同的form表单的提交主要区别在于,ajax提交表单是异步提交的,而普通的是同步提交的表单.通过在后台与服务器进行少量数据交换,ajax 可以使网页实现异步更新.这意味 ...
随机推荐
- 解决SQL SERVER数据库备份时出现“操作系统错误5(拒绝访问)。BACKUP DATABASE 正在异常终止。”错误的解决办法
SQL SERVER数据库进行备份时出现“操作系统错误5(拒绝访问).BACKUP DATABASE 正在异常终止.”错误.我们应该如何解决这个问题?小编今天为大家推荐一个解决办法. 一般备份文件选择 ...
- An error report file with more information is saved as hs_err_pid2756.log
An error report file with more information is saved as hs_err_pid2756.log weblogic启服务时遇到的问题,重新部署都不行, ...
- java.sql.SQLException: Incorrect string value: '\xF0\x9F\x98\xB3' for column 'Content' at row 1
在尝试将 emoji 表情符号 插入MySQL数据库时,遇到以下错误信息: ### The error occurred while setting parameters ### SQL: INSER ...
- [Python] json 报错'xxx is not JSON serializable'的处理方法
predictions = self.model.predict(x_data, verbose=0)[0] y_pred_idx = np.argmax(predictions) y_pred_pr ...
- learn go return fuction
package main // 参考文章: // https://github.com/Unknwon/the-way-to-go_ZH_CN/blob/master/eBook/06.9.md im ...
- 【剑指offer】数字在排序数组中出现的次数,C++实现
原创博文,转载请注明出处! # 题目 # 思路 利用二分查找法,查找元素k在排序数组中第一次出现的位置m及最后一次出现的位置n,m-n+1即为元素k再排序数组中出现的次数. 二分查找法在数 ...
- DevExpress GridControl 显示外部图片
如果数据源中只包含图片的链接,如何在DevExpress GridControl的一列中显示外部图片? 要实现该功能,可通过非绑定列的方式来实现.具体实现方法如下: 1. 创建了一个非绑定列并设 ...
- SpringMvc和servlet简单对比介绍
原文链接:http://www.cnblogs.com/haolnu/p/7294533.html 一.servlet实现登录. 咱们先来看一下servlet实现注册登录. <servlet&g ...
- spring @Autowired注入的原理
只知道如何用Autowired注解,知道可以替代set,get方法,很方便,却一直不知道,为什么可以代替 今天探索一下原因,所谓知其然还要知其所以然,才能理解的更好,记忆的更牢,才能转化为自己的知识. ...
- Unicode字符转换成字符串
/*** * Unicode字符转换成字符串 * @param str * Unicode字符 * @return * String * * @author WXW */ public static ...