1. 程式人生 > >HTML提交方式post和get區別(實驗)

HTML提交方式post和get區別(實驗)

des url action 通過 性別 清除數據 map pass pack

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 }

四、結果

技術分享

技術分享

HTML提交方式post和get區別(實驗)