html form表单

「爱情、让人受尽委屈。」 2022-05-19 12:29 356阅读 0赞

提交

前言

参考
java中的url 编码与解码
URL中带加号的处理

application/x-www-form-urlencoded 字符串

一种编码类型。
当URL地址里包含非西欧字符的字符串时,系统会将这些字符转换成application/x-www-form-urlencoded字符串。
表单里提交时也是如此,当包含非西欧字符的字符串时,系统也会将这些字符转换成application/x-www-form-urlencoded字符串。
然而,在向服务器发送大量的文本、包含非ASCII字符的文本或二进制数据时这种编码方式效率很低。这个时候我们就要使用另一种编码类型“multipart/form-data”。
比如在我们在做上传的时候,表单的enctype属性一般会设置成“multipart/form-data”。Browser端<form>表单的ENCTYPE属性值为multipart/form-data,它告诉我们传输的数据要用到多媒体传输协议,由于多媒体传输的都是大量的数据,所以规定上传文件必须是post方法,<input>的type属性必须是file。

http get请求时、form 表单以“application/x-www-form-urlencoded”提交时,转换规则:

  1. 字符”a”-“z”,”A”-“Z”,”0”-“9”,”.”,”-“,”*”,和”_” 都不会被编码;
  2. 将空格转换为加号 (+) ;
  3. 将非文本内容转换成”%xy”的形式,xy是两位16进制的数值;
  4. 在每个 name=value 对之间放置 & 符号;

使用URL时注意:

web 设计者面临的众多难题之一便是怎样处理不同操作系统间的差异性。这些差异性能引起URL方面的问题:例如,一些操作系统允许文件名中含有空格符,有些又不允许。大多数操作系统不会认为文件名中含有符号“#”会有什么特殊含义;但是在一个URL中,符号“#”表示该文件名已经结束,后面会紧跟一个 fragment(部分)标识符。其他的特殊字符,非字母数字字符集,它们在URL或另一个操作系统上都有其特殊的含义,表述着相似的问题。为了解决这些问题,我们在URL中使用的字符就必须是一个ASCII字符集的固定字集中的元素,具体如下:
1.大写字母A-Z
2.小写字母a-z
3.数字 0-9
4.标点符` - _ . ! ~ * ' (和 ,)
所有其他字符都是不安全的,因此首先使用一些编码机制将它们转换为一个或多个字节。然后每个字节用一个包含 3 个字符的字符串 “%xy” 表示,其中 xy 为该字节的两位十六进制表示形式。推荐的编码机制是 UTF-8。但是,出于兼容性考虑,如果未指定一种编码,则使用相应平台的默认编码。
其中空格是一个特殊情况,因为它除了被编码成“%20”以外,还能编码为一个“+”。加号(+)本身被编码为%2B。当/ # = & 和?作为名字的一部分来使用时,而不是作为URL部分之间的分隔符来使用时,它们都应该被编码。

Java 处理 application/x-www-form-urlencoded

  1. // 将普通字符串转换成application/x-www-form-urlencoded字符串
  2. java.net.URLEncoder.decode(String s, String enc);
  3. // 将application/x-www-form-urlencoded字符串转换成普通字符串。
  4. java.net.URLDecoder.decode(String s, String enc);

发表评论

表情:
评论列表 (有 0 条评论,356人围观)

还没有评论,来说两句吧...

相关阅读

    相关 HTML form

    目录 表单标签 表单域 表单按钮 input与label联合使用 表单分组 表单的初级验证 参考 -------------------- HTML表单用于收

    相关 为什么html中加form,HTML form

    HTML表单: 表单用于搜集不同类型的用户输入,提交给网站后台服务器。表单是一个包含表单元素的区域,表单元素是允许用户在表单中(比如:文本域、下拉列表、单选框、复选框等等)输

    相关 Form-Form

    一、典型表单  在 Form 组件中,每一个表单域由一个 Form-Item 组件构成,表单域中可以放置各种类型的表单控件, 包括 Input、Select、Check