jsp学习笔记——HTML表单

来源:互联网 发布:java 法定节假日 编辑:程序博客网 时间:2024/06/05 02:32

关于HTML请求的内容可以参考前一章节http://blog.csdn.net/u010724039/article/details/42291985,HTML的请求有两个主要的请求方法,为get和post方法,get方法可以为html超链接(也就是<a></a>格式内容)提交请求,也可以为html表单提交请求,post方法只能为html表单提交请求,并且实现与get方法不同。下面是一个html表单方法:

<html>
<body>
<form action="main.jsp" method="GET">
First Name: <input type="text" name="first_name">
<br />
Last Name: <input type="text" name="last_name" />
<input type="submit" value="Submit" />
</form>
</body>
</html>

如果要实现get方法请求,比如在表单中输入first_name的值为a,last_name值为b,则其http请求的内容如下所示:

GET /hello/checkUser.html?first_name=a&last_name=b HTTP/1.1
Referer: http://localhost:8000/hello/index.html
Accept: */*
Accept-Language: zh-cn
Accept-Encoding: gzip, deflate
Host: localhost:8000
Connection: Keep-Alive
Cookie: JSESSIONID=BBBA54D519F7A320A54211F0107F5EA6


注意:并没有请求主体,仅有一个空行

如果实现post方法请求,http请求内容则如下:

POST /hello/checkUser.html?opt=xxx HTTP/1.1
Referer: http://localhost:8000/hello/index.html
Accept: */*
Accept-Language: zh-cn
Content-Type: application/x-www-form-urlencoded
Accept-Encoding: gzip, deflate
Host: localhost:8000
Content-Length: 20
Connection: Keep-Alive
Cache-Control: no-cache
Cookie: JSESSIONID=BBBA54D519F7A320A54211F0107F5EA6

first_name=a&last_name=b

注意:此时在空行之后,有请求主体。

可以看到无论是get或者是post请求,都是由浏览器生成的,只是get方式会将表单数据进行URL Encoding转换为URL方式进行提交,并且原网址与编码之后的信息用?隔开。而post方式则不需要这一操作,仅将表单数据作为请求主体内容发出,但是存在问题的是,post方法不能使用非法字符,要对字符进行URL Encoding转换。关于转换规则如下:

-字母数字字符 "a" 到 "z"、"A" 到 "Z" 和 "0" 到 "9" 保持不变。
-特殊字符 "."、"-"、"*" 和 "_" 保持不变。
-空格字符 " " 转换为一个加号 "+"。
-所有其他字符都是不安全的,认为是非法字符,因此首先使用一种编码机制将它们转换为一个或多个字节。然后对每个字节用一个包含 3 个字符的字符串 "%xy" 表示,其中 xy 为该字节的两位十-六进制表示形式。推荐的编码机制是 UTF-8。

0 0
原创粉丝点击