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提交方式!
以上为本人(菜鸟级别)学习过程中的一点感悟,如有不对的地方还望大家多多指正!