关闭

HTML中<form>表单利用 post 提交与利用 get 提交时的区别

标签: html表单
1814人阅读 评论(0) 收藏 举报
分类:

先利用HTML的<form>表单写一个简单的注册页面

HTML代码如下:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>注册页面</title>
</head>

<fieldset>
	<legend>注册区域</legend>
    <form action="http://localhost:12345" method="post">
        <table border="1" bordercolor="#0099FF" width="70%" cellpadding="10" cellspacing="0">
            <tr>
                <th colspan="2">注册页面</th>
            </tr>
            <tr>
                <td>用户名:</td>
                <td><input type="text" name="user" /></td>
            </tr>
            <tr>
                <td>密码:</td>
                <td><input type="password" name="psw" /></td>
            </tr>
            <tr>
                <td>确认密码:</td>
                <td><input type="password" name="repsw" /></td>
            </tr>
            <tr>
                <td>性别:</td>
                <td>
                    <input type="radio" name="sex" value="nan" />男
                    <input type="radio" name="sex" value="nv"  />女
                </td>
            </tr>
            <tr>
                <td>技术:</td>
                <td>
                    <input type="checkbox" name="tech" value="java" />JAVA
                    <input type="checkbox" name="tech" value="jsp" />JSP
                    <input type="checkbox" name="tech" value="html" />HTML
                </td>
            </tr>
            <tr>
                <td>国家:</td>
                <td>
                    <select name="country">
                        <option value="none">--选择国家--</option>
                        <option value="cn">中国</option>
                        <option value="en">英国</option>
                        <option value="us">美国</option>
                    </select>
                </td>
            </tr>
            <tr>
                <th colspan="2">
                    <input type="submit" value="提交数据" />
                    <input type="reset" value="清除数据" />
                </th>
            </tr>
        </table>
        
    </form>
</fieldset>
<body>
</body>
</html>

页面效果如下:


再写一个服务器端的代码

RegServer.java 代码如下:

class RegServer
{
	public static void main(String[] args) throws Exception{
		ServerSocket ss = new ServerSocket(12345);
		Socket s = ss.accept();
		InputStream in = s.getInputStream();
		byte[] buf = new byte[1024];
		int len = in.read(buf);
		System.out.println(new String(buf,0,len));
		OutputStream out = s.getOutputStream();
		PrintWriter pw = new PrintWriter(out,true);
		pw.println("<h1>注册成功</h1>");
		s.close();
		ss.close();
	}
}
输入数据:

提交数据利用 post 时,服务器端响应如下:


网站地址栏显示:http://localhost:12345/

用户提交的信息不会在地址栏出现


提交数据利用 get 时,服务器端响应如下:


网站地址栏显示:http://localhost:12345/?user=Tsang&psw=123456&repsw=123456&sex=nan&tech=java&tech=jsp&tech=html&country=us

用户提交的信息会在地址栏出现

总结:在form提交的时候,如果不指定Method,则默认为get请求,Form中提交的数据将会附加在url之后,以?分开与url分开。字母数字字符原样发送,但空格转换为“+“号,其它符号转换为%XX,其中XX为该符号以16进制表示的ASCII(或ISOLatin-1)值。get请求请提交的数据放置在HTTP请求协议头中,而post提交的数据则放在实体数据中;
get方式提交的数据最多只能有1024字节,而post则没有此限制。 

通过get方法提交数据,可能会带来安全性的问题。比如一个登陆页面。当通过get方法提交数据时,用户名和密码将出现在URL上。如果:
1、 登陆页面可以被浏览器缓存;
2、 其他人可以访问客户的这台机器。
那么,别人即可以从浏览器的历史记录中,读取到此客户的账号和密码。所以,在某些情况下,get方法会带来严重的安全性问题。 

在Form中,建议使用post方法。


0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:89910次
    • 积分:1573
    • 等级:
    • 排名:千里之外
    • 原创:62篇
    • 转载:3篇
    • 译文:0篇
    • 评论:26条
    文章分类
    最新评论