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

来源:互联网 发布:乐视员工获刑4年 知乎 编辑:程序博客网 时间:2024/06/03 19:25

先利用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
原创粉丝点击