HTML【2】表单提交与服务层的模拟(详解get与post提交方式的不同)
2015-08-21 17:48
676 查看
在HTML【1】中已经说明了HTML编程的基本方式,最后说到了表单提交的方式有get和post方式,那么到底什么是get/post 方式呢,两者有什么区别?现在我就具体的介绍一下。
首先回顾一下表单的基本编程,代码如下:
其中method="post"是post方式,默认的(我们也可以指定)为get方式。那么两者有什么区别呢?
这里先进行一下这样的思考,既然是提交,那向什么地方提交呢?答案是肯定的,HTML网页向服务器提交表单数据,既然想到服务器那么就会想到tomcat,同时也必须想到可以自己编写一个Java程序来模拟tomcat的服务。
具体的过程如下,首先ServerSocket监听一个端口,相对应的HTML的action =“http://localhost:9090”表示数据提交到本地主机的9090端口,当ServerSocket监听到有HTML对这个端口进行连接,就accept这个Socket对象,然后就可以读取http交互的信息。具体的代码如下:
那么咱们运行一下:
当提交方式是get的时候,收到的返回信息是:
下面的是标签栏的内容。
可以发现,他的所有数据在请求行的时候就会显示出来(并在标签栏里就显示)显然这是非诚不安全的。
下面是使用post返回的http的内容,照片如下:
可以看出它将提交的内容全部封装到空行之后的内容里,并且标签栏里面没有显示任何东西,显然这是相对比较安全的。
好了,它俩具体的区别如下:
1.从安全性看get<post,get 提交的数据汇在浏览器的地址栏显示
2.从提交的内容大小看get<post,get不能大于2K,而post提交理论上不受限制,但不要大于64K。
3.从请求响应速度看,get>post,get要求服务器立即处理请求,而post请求可能形成一个队列。
首先回顾一下表单的基本编程,代码如下:
<form action="http://localhost:9090" method="post"> <table border="1" bordercolor='#0000ff'cellpadding="10" cellspacing="0" width=600 > <tr> <th colspan="2">注册表单 </th> </tr> <tr> <th>用户名称:</th> <td> <input type="text"name="user"value=""/> </td> </tr> <tr> <th>性别:</th> <td><input type="password"name="pass"/></td> </tr> <tr> <th>选择性别:</th> <td> <input type="radio"name='sex'value="man"/>男 <input type="radio"name='sex'value="woman"checked="checked"/>女 </td> </tr> <tr> <th>选择技术:</th> <td> <input type="checkbox"name="tech"value="java"/>Java <input type="checkbox"/>C++<input type="checkbox"/>HTML </td> </tr> <tr> <th>选择国家:</th> <td> <select name="country"> <option value="none">---选择国家---</option> <option value="USA" selected="selected">美国</option> <option value="CN">中国</option> <option value="EN">英国</option> <option value="GER">德国</option> </select> </td> </tr> <tr> <th colspan="2"> <input type="reset"value="清除数据"> <input type="submit"value="提交数据"/> </th> </tr> </table> </form>
其中method="post"是post方式,默认的(我们也可以指定)为get方式。那么两者有什么区别呢?
这里先进行一下这样的思考,既然是提交,那向什么地方提交呢?答案是肯定的,HTML网页向服务器提交表单数据,既然想到服务器那么就会想到tomcat,同时也必须想到可以自己编写一个Java程序来模拟tomcat的服务。
具体的过程如下,首先ServerSocket监听一个端口,相对应的HTML的action =“http://localhost:9090”表示数据提交到本地主机的9090端口,当ServerSocket监听到有HTML对这个端口进行连接,就accept这个Socket对象,然后就可以读取http交互的信息。具体的代码如下:
public static void main(String[] args) throws IOException { // 接收表单的数据 ServerSocket ss = new ServerSocket(9090); Socket s = ss.accept(); System.out.println(s.getInetAddress().getHostAddress()); InputStream in = s.getInputStream(); byte[] buf = new byte[1024]; int len = in.read(buf); System.out.println(new String(buf,0,len)); PrintWriter out = new PrintWriter(s.getOutputStream(),true); out.println("<font color='green'size=7>注册成功</font>"); s.close(); ss.close(); } }
那么咱们运行一下:
当提交方式是get的时候,收到的返回信息是:
下面的是标签栏的内容。
可以发现,他的所有数据在请求行的时候就会显示出来(并在标签栏里就显示)显然这是非诚不安全的。
下面是使用post返回的http的内容,照片如下:
可以看出它将提交的内容全部封装到空行之后的内容里,并且标签栏里面没有显示任何东西,显然这是相对比较安全的。
好了,它俩具体的区别如下:
1.从安全性看get<post,get 提交的数据汇在浏览器的地址栏显示
2.从提交的内容大小看get<post,get不能大于2K,而post提交理论上不受限制,但不要大于64K。
3.从请求响应速度看,get>post,get要求服务器立即处理请求,而post请求可能形成一个队列。
相关文章推荐
- 如何加载HTML页面页面到另一个界面中
- HTML 笔记 ---Day01
- iframe调用后台方法通过response返回html代码
- Html.ActionLink
- 【HTML代码】访问页面时,拨打页面中的电话号码
- POI读取word转换html
- 前期预科html学习(二)
- pdf格式的电子如何转换成html
- HTML中的IE条件注释
- Web学习之HTML
- c#蜘蛛程序之HTML解析利器HtmlAgilityPack
- CDHTMLDialog调用注意
- xml理论学习总结
- XML和HTML重点小解
- HTML表单
- HTML【1】的学习,实用编程+代码
- XML与HTML
- Html标签
- 在字符串资源文件中添加HTML元素,直接使用字符串资源,HTML元素没起作用的解决办法
- html 标签总结