您的位置:首页 > Web前端 > JavaScript

jsp学习笔记——HTML表单

2015-01-05 19:57 176 查看
关于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。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java jsp html application