http请求无非就是get和post请求,分下面四种场景
1、URL方式直接访问。(get请求)
2、页面链接。(get请求)
3、表单get提交(get请求)
4、表单post提交(post请求)
参数传递有两种,一种是通过url传参,一种是通过body传参。
1.表单get提交其实就是将参数拼接到url后面,如果是中文必须要转换为ascii再拼接提交,例如:"我 爱 你" 转换为 "%E6%88%91%20%E7%88%B1%20%E4%BD%A0",也就是用encodeURI函数编码
2.post提交表单时,参数通过body传递,传递时根据请求头contentType类型编码处理再提交到服务器。
3.值得注意的一个坑:用ajax.post提交数据时候中文乱码
a)当含有中文的参数拼接在post的url后面会乱码,中文参数必须以js对象放在ajax的data属性上;
b)当含有中文的参数以序列化的形式放在ajax的data属性上会中文乱码,必须以js对象的形式放在ajax的data属性上(以序列化的形式ajax会把参数拼接到url后 面 jquery.ajax是这样的)
js编码函数区别
js对文字进行编码涉及3个函数:escape,encodeURI,encodeURIComponent,相应j3个java解码函数:unescape,decodeURI,decodeURIComponent
附带escape,decodeURI,decodeURIComponent之间的区别
escape对0-255以外的unicode值进行编码时输出%u****格式,
其它情况下escape,encodeURI,encodeURIComponent编码结果相同。
escape不编码字符有69个:*,+,-,.,/,@,_,0-9,a-z,A-Z
encodeURI不编码字符有82个:!,#,$,&,',(,),*,+,,,-,.,/,:,;,=,?,@,_,~,0-9,a-z,A-Z
encodeURIComponent不编码字符有71个:!, ',(,),*,-,.,_,~,0-9,a-z,A-Z
web.xml中配置的过滤器只能针对post 请求的数据进行编码转换,对于get 提交的数据乱码是处理不了的.(get请求编码设置tomcat的server.xml文件)