HTML提交方式post和get區別(實驗)
一、post和get區別
get提交,提交的信息都顯示在地址欄中。
post提交,提交的信息不顯示地址欄中,顯示在消息體中。
二、客戶端代碼
<!DOCTYPE html>
<html>
<head>
<title>Form.html</title>
<meta name="keywords" content="keyword1,keyword2,keyword3">
<meta name="description" content="this is my page">
<meta name="content-type" content="text/html; charset=GB2312">
<!--<link rel="stylesheet" type="text/css" href="./styles.css">-->
</head>
<body>
<!--
提交方式:get提交。
地址欄:http://localhost:9891/?user=abc&psw=123&repsw=123&sex=nan&tech=java&tech=html&country=cn
GET /?user=abc&psw=123&repsw=123&sex=nan&tech=java&tech=html&country=cn HTTP/1.1
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, */*
Accept-Language: zh-cn,zu;q=0.5
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; InfoPath.2)
Host: localhost:9891
Connection: Keep-Alive
提交方式:POST
地址欄:http://localhost:9891/
POST / HTTP/1.1
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, */*
Accept-Language: zh-cn,zu;q=0.5
Content-Type: application/x-www-form-urlencoded
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; InfoPath.2)
Host: localhost:9891
Content-Length: 68
Connection: Keep-Alive
Cache-Control: no-cache
user=hahah&psw=8989&repsw=8989&sex=nv&tech=html&tech=css&country=usa
GET提交和POST提交的區別?
1,
get提交,提交的信息都顯示在地址欄中。
post提交,提交的信息不顯示地址欄中。
2,
get提交,對於敏感的數據信息不安全。
post提交,對於敏感信息安全。
3,
get提交,對於大數據不行,因為地址欄存儲體積有限。
post提交,可以提交大體積數據。
4,
get提交,將信息封裝到了請求消息的請求行中。
post提交,將信息封裝到了請求體中。
在服務端的一個區別。
如果出現將中文提交到tomcat服務器,服務器默認會用iso8859-1進行解碼會出現亂碼,
通過iso8859-1進行編碼,在用指定的中文碼表解碼。即可。
這種方式對get提交和post提交都有效。
但是對於post提交方式提交的中文,還有另一種解決辦法,就是直接使用服務端一個對象
request對象的setCharacterEncoding方法直接設置指定的中文碼表就可以將中文數據解析出來。
這個方法只對請求體中的數據進行解碼。
綜上所述:表單提交,建議使用post。
和服務端交互的三種方式:
1,地址欄輸入url地址。get
2,超鏈接。 get
3,表單。 get 和 post
如果在客戶端進行增強型的校驗(只要有一個組件內容是錯誤,是無法繼續提交的。只有全對才可以提交)
問,服務端收到數據后,還需要校驗嗎?
需要,為了安全性。
為了信息安全,也為了客戶端那邊不要亂提交數據,客戶端和服務端都需要做校驗。
如果服務端做了增強型的校驗,客戶端還需要校驗嗎?
需要,因為要提高用戶的上網體驗效果,減輕服務器端的壓力。
-->
表單格式化
<br>
<!-- action里面的http協議不能忘記 -->
<form action="http://localhost:9891" method="post">
<!--
cellpadding 屬性規定單元邊沿與其內容之間的空白。
注釋:請勿將該屬性與 cellspacing 屬性相混淆,cellspacing 屬性規定的是單元之間的空間。
從實用角度出發,最好不要規定 cellpadding,而是使用 CSS 來添加內邊距。
-->
<table border="1" bordercolor="#00ffff" cellpadding=10 cellspacing=0
width=400>
<!-- 由此可見,<th>和<td>標簽都是用於表格單元格顯示的。不同的是<th>在單元格中加粗顯示。 -->
<tr>
<!-- 占兩列 -->
<th colspan="2">注冊表單</th>
</tr>
<tr>
<td>用戶名稱</td>
<td><input type="text" name="user" value=""><br /></td>
</tr>
<tr>
<td>輸入密碼</td>
<td><input type="password" name="pwd" /><br /></td>
</tr>
<tr>
<td>確認密碼</td>
<td><input type="password" name="repwd" /><br /></td>
</tr>
<tr>
<td>選擇性別</td>
<td><input type="radio" name="sex" value="nan" />男 <input
type="radio" name="sex" value="nv" checked="checked" />女<br /></td>
</tr>
<tr>
<td>選擇技術</td>
<td><input type="checkbox" name="tech" value="java" />JAVA <input
type="checkbox" name="tech" value="html" />HTML <input
type="checkbox" name="tech" value="css" />CSS <br /></td>
</tr>
<tr>
<td>選擇國家</td>
<td><select name="country">
<option value="none">--選擇國家--</option>
<option value="usa">美國</option>
<option value="en">英國</option>
<!-- 默認選擇中國 -->
<option value="cn" selected="selected">中國</option>
</select></td>
</tr>
<tr>
<th colspan="2"><input type="reset" value="清除數據" /> <input
type="submit" value="提交數據" /></th>
</tr>
</table>
</form>
</body>
</html>
三、服務器端代碼
RegServer.java
1 /**
2 *
3 */
4 package cn.itcast.server;
5
6 import java.io.IOException;
7 import java.io.InputStream;
8 import java.io.PrintWriter;
9 import java.net.ServerSocket;
10 import java.net.Socket;
11
12 /**
13 * @author Fry
14 *
15 */
16 public class RegServer {
17
18 /**
19 * @param args
20 * @throws Exception
21 */
22 public static void main(String[] args) throws Exception {
23
24 ServerSocket ss = new ServerSocket(9891);//新建服務端端口
25
26 Socket s = ss.accept();//端口監聽
27 //輸出服務器主機地址 ans:0:0:0:0:0:0:0:1
28 System.out.println(s.getInetAddress().getHostAddress());
29 InputStream in = s.getInputStream();//字節輸入流,用來接收客戶端消息
30 byte[] buf = new byte[1024];//1024字節的緩存
31 int len = in.read(buf);//將收到的消息讀到buf中
32 //輸出接收到的頁面消息 包括消息行 消息頭 消息體
33 System.out.println(new String(buf,0,len));
34 //字符輸出,用來存儲發送給客戶端的消息
35 PrintWriter out = new PrintWriter(s.getOutputStream(),true);
36 //客戶端接收到的消息
37 out.println("<font color='green' size='7'>注冊成功</font>");
38 //關閉端口
39 s.close();
40 ss.close();
41 }
42
43 }
四、結果



