用java socket实现了一个简单的http服务器, 可以处理GET, POST,以及带一个附件的multipart类型的POST。虽然中途遇到了很多问题, 不过通过在论坛和几个高手交流了一下,问题都解决了。如果你觉得程序有些地方看不明白,可以参看这个帖子:http://topic.csdn.net/u/20090625/22/59a5bfc8-a6b6-445d-9829-ea6d462a4fe6.html .
虽然解析http头不是很规范,本来应该用原始的字节流, 我采用了一个折衷的方案,用DataInputStream.
本代码的实用性==0,但是可以帮助很好地了解http协议,然后其他的应用层协议大都如此。
如果你从来都没有了解过http协议,建议先搜索阅读一下,或者你还可以用下面的代码来简单的看一看到底浏览器和服务器之间都相互发送了什么数据。
MyHttpClient.java: 模拟浏览器的行为, 向服务器发送get/post请求,然后打印出服务器返回的消息。这样就可以查看当一个请求到来之后, 服务器到底都给浏览器发送了哪些消息。
MyServer.java: 模拟server端接收浏览器的请求,然后把整个请求的报文打印出来。程序运行之后直接用浏览器测试。
主程序MyHttpServer.
测试文件post.html, upload.html都放在上面程序定义的WEB_ROOT下面。
post.html:处理普通的post请求
upload.html:测试带附件的post请求
一切准备妥当,并且MyHttpServer运行之后, 在浏览器输入http://localhost:8080/post.html和http://localhost:8080/upload.html即可进行测试.