zoukankan      html  css  js  c++  java
  • HTML【2】表单提交与服务层的模拟(具体解释get与post提交方式的不同)

          在HTML【1】中已经说明了HTML编程的基本方式,最后说到了表单提交的方式有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>username称:</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网页向server提交表单数据,既然想到server那么就会想到tomcat,同一时候也必须想到能够自己编写一个Java程序来模拟tomcat的服务。

             详细的步骤例如以下。首先ServerSocket监听一个port,相相应的HTML的action =“http://localhost:9090”表示数据提交到本地主机的9090port,当ServerSocket监听到有HTML对这个port进行连接,就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要求server马上处理请求,而post请求可能形成一个队列。



  • 相关阅读:
    2016 -03-08 静态库 .a
    2016 -03 -07 搜索功能 模糊查询
    2016 -03 -07 字符串是否包含字符串/字符
    2016-03-04 一个完整的model 样式
    2016-03-01 地图定位 以及失败
    2016-03-01 svn conerstone
    2016-03-01 svn .a 不能上传到conerstone上的解决
    2016-02-29 不能真机调试的问题
    2016-02-28 00:53:21 version 与build
    Add Two Numbers
  • 原文地址:https://www.cnblogs.com/zhchoutai/p/6941858.html
Copyright © 2011-2022 走看看