Java HttpServer实现交互

</pre><pre name="code" class="java">package com.knightsight.server;
import java.io.*;
import java.util.Date;

public class Response {
	public static final String CRLF="\r\n";
	public static final String BLANK=" ";
	private BufferedWriter bw;
	
	//头信息、正文及长度 response工具类
	private StringBuilder headInfo;
	private StringBuilder content;
	private int len=0;
	
	public Response(OutputStream os){
		headInfo=new StringBuilder();
		content=new StringBuilder();
		len=0;
		bw=new BufferedWriter(new OutputStreamWriter(os));
		
	}
	public Response print(String info){
		content.append(info);
		len+=info.getBytes().length;
		return this;
		
	}
	
	public Response println(String info){
		content.append(info).append(CRLF);
		len+=(info+CRLF).getBytes().length;
		return this;
		
	}
	private void createHeadInfo(int code){
		headInfo.append("HTTP/1.1").append(BLANK).append(code).append(BLANK);
		switch(code){
		case 200:
			headInfo.append("OK");
			break;
		case 404:
			headInfo.append("NOT FOUND");
			break;
		case 500:
			headInfo.append("SERVER ERROR");
			break;
		}
		headInfo.append(CRLF);
		//响应头response head
		headInfo.append("Server:knight Server/0.0.1").append(CRLF);
		headInfo.append("Date:").append(new Date()).append(CRLF);
		headInfo.append("Content-type:text/html;charset=GBK").append(CRLF);
		//正文长度
		headInfo.append("Content-Length:").append(len).append(CRLF);
		headInfo.append(CRLF);
	}
	
	public void pushToClient(int code) throws IOException{
		createHeadInfo(code);
		bw.append(headInfo.toString());
		bw.append(content.toString());
		System.out.println(headInfo.toString()+content.toString());
		bw.flush();
		bw.close();
	}
}

/*
     输入localhost:8800 会提示responseText信息,表单键入显示账号密码
(1)协议头。协议版本、状态码、描述
    HTTP/1.1200 ok
1xx 信息类 正在进一步处理
2xx 成功类 接收到请求并进一步处理 200 ok
3xx 重定向类 请求没有成功,采取进一步操作
4xx 客户端错误 404not found
5xx 服务器错误
 
(2)Response Header。服务器类型、日期时间、正文类型长度。
   Server:ApacheTomcat/1.1.0
   Date: Sat, 31 Dec 2005 23:59:59 GMT
   Content-Type: text/html;charset=GBK
   Content-Length: 122
   Content-Type:text/plain
 
(3)Response Content。协议正文
<html>
<head>
<title>Wrox Homepage</title>
</head>
<body>
<!-- body goes here -->
</body>
</html>
 */

package com.knightsight.server;
import java.net.*;
import java.util.*;
import java.io.*;

public class Server3 {
	private ServerSocket server;
	public static void main(String[] args) {
		Server3 server3=new Server3();
		server3.start();
		
	}
	
	public void start(){
		try {
			server = new ServerSocket(8800);	
			this.receive();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
	
	public void receive(){
			try {
				Socket client=server.accept();
			 	byte []data=new byte[20480];
			 	//1.获取输入流
				int len=client.getInputStream().read(data);
				String requestInfo=new String(data,0,len).trim();
				System.out.println(requestInfo);
								
				Response reponse=new Response(client.getOutputStream());
				reponse.println("<html><head><title>HTTP responseExample</title>");
				reponse.println("</head><body>     Hello 杨雪 困了吃水果</body></html>");
				reponse.pushToClient(500);	
				
			} catch (IOException   e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		
	}
	
}


<html>
<head>
<title>First Form</title>
</head>

<body>
	<pre>
	get:数据量小,安全性不高,默认方式
	post:量大安全性相对高
	action:请求的服务器路径
	id:编号js使用
	name:后端区分唯一性,只要提交数据后台,必须有name
	</pre>
<form method="post" action="http://localhost:8800/index.html">
	username:<input type="text" name="uname" id="name" />
	passw:<input type="password" name="pwd" id="password"/>
	<input type="submit" value="Submit" />
</form>
</body>
  
</html> 


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
提供的源码资源涵盖了安卓应用、小程序、Python应用和Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值