一、GET方式

1、地址栏(URI)会跟上参数数据。以?开头,多个参数之间以&分割。

GET /day09/testMethod.html?name=eric&password=123456 HTTP/1.1
Host: localhost:8080
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:35.0) Gecko/20100101 Firefox/35.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: zh-cn,en-us;q=0.8,zh;q=0.5,en;q=0.3
Accept-Encoding: gzip, deflate
Referer: http://localhost:8080/day09/testMethod.html
Connection: keep-alive

2、GET提交参数数据有限制,不超过1KB。

3、GET方式不适合提交敏感密码。

4、注意: 浏览器直接访问的请求,默认提交方式是GET方式

二、POST方式

1、参数不会跟着URI后面。参数而是跟在请求的实体内容中。没有?开头,多个参数之间以&分割

POST /day09/testMethod.html HTTP/1.1
Host: localhost:8080
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:35.0) Gecko/20100101 Firefox/35.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: zh-cn,en-us;q=0.8,zh;q=0.5,en;q=0.3
Accept-Encoding: gzip, deflate
Referer: http://localhost:8080/day09/testMethod.html
Connection: keep-alivename=eric&password=123456

2、POST提交的参数数据没有限制。

3、POST方式提交敏感数据。

三、两种方式传递的请求参数获取方法

核心的API:

request.getParameter("参数名");  根据参数名获取参数值(注意,只能获取一个值的参数)
request.getParameterValue("参数名“);根据参数名获取参数值(可以获取多个值的参数)
request.getParameterNames();   获取所有参数名称列表 

四、请求参数编码问题

请认真看下边的这张图:

分析:

1、我们在编写HTML或者JSP的时候,我们设置的编码为UTF-8。请求参数在传递的时候,会变成字节,这个转换时以我们设置的UTF-8为标准的。

2、我们是用 request.getParameter("参数名"),这个方法获取的时候,它是使用 "iso-8859-1" 进行解码的,所以就出现了中国特色的乱码问题。

解决方法:

修改POST方式参数编码:

request.setCharacterEncoding("utf-8");

这个编码的设置,只是对请求信息的实体部分进行的设置,所以只对POST方法有效。

修改GET方式参数编码:

手动解码:

String name = new String(name.getBytes("iso-8859-1"),"utf-8");

五、实例分析

public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {Enumeration<String> enums=request.getParameterNames();while(enums.hasMoreElements()){String name=enums.nextElement();String name1=new String(name.getBytes("iso-8859-1"),"UTF-8"); //手动设置编码if("habit".equals(name)){System.out.println(name1+":");String [] values=request.getParameterValues(name);for(String str:values){String str1=new String(str.getBytes("iso-8859-1"),"UTF-8");System.out.print(str1+"  ");}System.out.println();}else{String value=request.getParameter(name);String values=new String(value.getBytes("iso-8859-1"),"UTF-8");System.out.println(name1+":"+values);}}}public void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {request.setCharacterEncoding("UTF-8"); //进行编码格式设置Enumeration<String> enums=request.getParameterNames(); //获取变量while(enums.hasMoreElements()){String name=enums.nextElement();if("habit".equals(name)){ //对于多值变量特殊处理System.out.println(name+":");String [] values=request.getParameterValues(name);for(String str:values){System.out.print(str+"  ");}System.out.println();}else{String value=request.getParameter(name);System.out.println(name+":"+value);}}}

index.jsp

 <body><form method="get" action="/HttpServletRequest/RequestDemo2">用户名<input type="text" name="userName"><br/>密码<input type="password" name="password"><br/>性别:<input type="radio" name="gender" value="男"/>男<input type="radio" name="gender" value="女"/>女<br/>籍贯:<select name="jiguan"><option value="广东">广东</option><option value="上海">上海</option></select><br/>爱好<input type="checkbox" name="habit" value="篮球"/>篮球<input type="checkbox" name="habit" value="足球"/>足球<input type="checkbox" name="habit" value="羽毛球"/>羽毛球<br/>个人简介:<textarea rows="5" cols="10" name="info"></textarea><br/><!-- 隐藏域 --><input type="hidden" name="id" value="001"/><br/><input type="submit" value="sbmit"/></form></body>

转载于:https://www.cnblogs.com/lyjs/p/5049642.html

细说表单提交的GET和POST相关推荐

  1. jQuery最简单的表单提交方式

    第一步:绑定事件 常用的与ajax相关的事件参考如下: 1.$(selector).click(function) 2.$(selector).change(function) 3.$(selecto ...

  2. 表单提交、页面注册案例

    表单属性设置 <form>标签 表示表单标签,定义整体的表单区域 action属性 设置表单数据提交地址 method属性 设置表单提交的方式,一般有"GET"方式和& ...

  3. html form提交前验证,form表单提交前验证实现方法

    form表单提交前验证实现方法2017-11-26 20:54 form表单提交是网站中最常见的,基本上所有的网站都会用到. 除非你就一些静态网页,仅仅是展示,而不需要互动,所以不需要提交表单. 但是 ...

  4. 公司--超级链接跳转和表单提交,删除的表单提交和删除失败的提示信息

    超级链接跳转 window.location.href = contentPath + '/masterProductionSchedule/modifyPHSetup.do?articleId='+ ...

  5. php 表单提交2次,微信开发之php表单微信中自动提交两次问题解决办法

    前言: 最近做微信开发,在微信中访问PHP页面,页面中有个表单.测试发现偶尔会出现表单被自动提交两次的情况,导致流程出错. 问题原因 暂时未找到原因,不过怀疑跟微信本身的机制有关. 解决方法 用ses ...

  6. html页面关闭前提示信息,【转】表单提交及关闭当前页面并刷新数据

    在DWZ文档中,对于DWZ框架Ajax无刷新表单提交处理流程描述如下: 1.       ajax表单提交给服务器 2.       服务器返回一个固定格式json结构 3.       js会调函数 ...

  7. form表单提交踩坑记

    2019独角兽企业重金招聘Python工程师标准>>> 今天收获了一次集团故障,心塞不已,究其原因,是form表单提交时web服务器对大小做了限制.这个必现的问题在测试阶段也不知为啥 ...

  8. DedeCMS实现自定义表单提交后发送指定QQ邮箱法

    https://www.baidu.com/s?ie=utf-8&f=8&rsv_bp=1&tn=monline_3_dg&wd=dedecms 邮箱&oq=d ...

  9. form 表单提交,防止重复提交,加token

    大体步骤分为: 1.通过java 生成随机数放在http 的header 里面 String token = IdentityUtil.uuid32();         getRequest().g ...

  10. layui表单提交使用form.on(‘submit(sub)‘,function (){}) 使用ajax请求时回调不执行的原因及解决方法

    layui表单提交使用form.on('submit(sub)',function (){}) 使用ajax请求时回调不执行的原因及解决方法 参考文章: (1)layui表单提交使用form.on(' ...

最新文章

  1. 前沿|揭开黑箱:希伯来大学计算机科学教授提出「信息瓶颈」
  2. Codeforces Round #321 (Div. 2) D Kefa and Dishes(dp)
  3. 【直播预约】线上Greentea JUG Meetup
  4. 微信浏览器打开网页被拦截了?Mindjump快速解决微信屏蔽网址用户打不开的难题...
  5. Silverlight之工具箱使用1
  6. apache lucene_Apache Lucene基础教程
  7. 接口使用jwt返回token_API接口JWT方式的Token认证(下),客户端(Android)的实现
  8. pythonhelloworld项目,10分钟搭建一个小型网页(python django)(hello world!)
  9. linux上安装osg_如何在 Linux 上安装并启用 Flatpak 支持? | Linux 中国
  10. 分享超高清多机位现场直播间搭建方案
  11. 第三方支付和聚合支付
  12. [渝粤教育] 浙江大学 2021秋 茶叶加工与品质管理学Ⅰ 陈萍 章节答案考试答案 浙江大学[渝粤教育]
  13. 帝国cms php超时,帝国CMS后台登录超时、登录错误5次限制的解决办法
  14. Kafka kafka-reassign-partitions.sh 命令使用
  15. i3s/s3m/3D Tile
  16. mysql mpm_Zabbix Mysql Fpmmm(MPM)监控的教程
  17. firefox调试html5程序,用 Firefox 开发者工具调试现代 Web 应用程序
  18. python @ 用法
  19. android图片资源加密解密,Android Glide实现图片加密解密 自定义格式
  20. 命名实体识别的一点经验与技巧

热门文章

  1. Unity Bug解决分析思路
  2. Linux系统编程 -- 进程 信号
  3. Gradle引入外部资源冲突问题,Gradle版本库冲突解决
  4. [渝粤教育] 陕西国防工业职业技术学院 Android开发 参考 资料
  5. 【渝粤教育】国家开放大学2018年春季 7408-21T多媒体软件制作与使用 参考试题
  6. 广度(宽度)优先搜索思路总结
  7. 【ICLR2020】看未知观测:一种简单的蒙特卡洛并行化方法
  8. 数字图像处理(二) 数字图像处理基础
  9. windows下安装MinGW、swig 、zlib
  10. 前端获取checkbox复选框的值 通过数组形式传递