现在的位置: 首页 > 综合 > 正文

HTML:get与post提交方式的不同

2013年05月03日 ⁄ 综合 ⁄ 共 3753字 ⁄ 字号 评论关闭

1.编写Reg.HTML代码如下:

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<!-- get提交方式: -->
	<form action="http://localhost:9090"  method="get">
		<table border="1" bordercolor="#0000ff" cellpadding="10" cellspacing="0"  width="400">
			<tr>
				<th colspan="2">表单项目</th>
			</tr>
			<tr>
				<td>用户名称:</td>
				<td><input type="text" name="yhm"/>
				</td>
			</tr>
			<tr>
				<td>用户密码:</td>
				<td><input type="password"  name="mm"/></td>
			</tr>
			<tr>
				<td>确认密码:</td>
				<td><input type="password" name="qm"/></td>
			</tr>
			<tr>
				<td>选择性别:</td>
				<td><input type="radio" name="sex" value="nan" checked="checked" >男 
					<input type="radio" name="sex" value="nv">女</td>
			</tr>
			<tr>
				<td>选择技术:</td>
				<td><input type="checkbox" value="html" />HTML
				    <input type="checkbox" value="java" />JAVA
					<input type="checkbox" value="css" />CSS
					</td>
			</tr>
			<tr>
				<td>选择国家:</td>
				<td><select ><option value="none">--选择国家--</option>
						<option value="usa">美国</option>
						<option value="en">英国</option>
						<option value="cn">中国</option>
					</select>
				</td>
			</tr>
			<tr >
				<th colspan="2"><input type="reset" value="清除数据">
								<input type="submit" value="提交数据">
				</th>
			</tr>
		</table>
	</form>
</body>
</html>

运行上面的代码,结果如下图:

2.新建RegServer.java文件,建立Socket链接

具体代码如下:

import java.io.IOException;
import java.io.InputStream;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;

public class RegServer {

	/**
	 * @param args
	 * @throws IOException 
	 */
	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 = 'BLUE' size = '7'>注册成功</font>");
		
		s.close();
		ss.close();

	}

}

3.运行java程序,在HTML表单项目中填写如下:

点击“提交数据”,跳转到注册成功页面,如下图:

以上为get方式提交的数据,同上可以更改method="post"。

 

注意:下面综述get与post提交方式的区别:

1.在get方式下提交数据

地址栏显示为:http://localhost:9090/?yhm=cruise&mm=123&qm=123&sex=nan

Console下的具体信息如下:

0:0:0:0:0:0:0:1
GET /?yhm=cruise&mm=123&qm=123&sex=nan HTTP/1.1
Accept: image/jpeg, application/x-ms-application, image/gif, application/xaml+xml, image/pjpeg, application/x-ms-xbap, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, */*
Accept-Language: zh-CN
User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; InfoPath.2)
Accept-Encoding: gzip, deflate
Host: localhost:9090
Connection: Keep-Alive

2.post方式下提交数据

地址栏显示:http://localhost:9090/

Console下的具体信息如下:

0:0:0:0:0:0:0:1
POST / HTTP/1.1
Accept: image/jpeg, application/x-ms-application, image/gif, application/xaml+xml, image/pjpeg, application/x-ms-xbap, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, */*
Accept-Language: zh-CN
User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; InfoPath.2)
Content-Type: application/x-www-form-urlencoded
Accept-Encoding: gzip, deflate
Host: localhost:9090
Content-Length: 32
Connection: Keep-Alive
Cache-Control: no-cache

yhm=cruise&mm=123&qm=123&sex=nan

 

总结:GET提交和POST提交的区别?

1、get提交的信息都显示在地址栏中;

       post提交的信息不在地址栏显示。

2、get提交对于敏感数据信息不安全;

      post提交对于敏感信息安全。

3、get提交对于大数据不行,因为地址栏存储体积有限;

      post提交可以提交大数据。

4、get提交将信息封装到了请求消息的请求行中;

      post提交将信息封装到了请求体中(yhm=cruise&mm=123&qm=123&sex=nan)。

 

在服务器端的一个区别:

如果出现将中文提交到tomcat服务器,服务器默认用ISO8859-1进行解码会出现乱码。

解决方法:先用ISO8859-1进行编码,然后再用指定的中文码表解码即可;

                  这种方式对get和post提交都有效。

                   

                  但是对于post提交方式提交的中文还有一种解决方案,那就是直接使用服务器端

                  request对象的setCharacterEncoding 方法直接设置指定的中文码表就可以将中文解析出来。

                              这个方法只对请求体中的数据进行解码。

综上所述:表单提交,建议使用post提交方式!

 

 

以上为本人(菜鸟级别)学习过程中的一点感悟,如有不对的地方还望大家多多指正!

抱歉!评论已关闭.