Http是一个基于请求/响应模式的,无状态的协议. 

 

请求java: http请求和响应_版本信息

响应 

java: http请求和响应_字符串_02

package com.atChina.chat.demo04;

import java.io.BufferedWriter;
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.Date;

public class MyHttp {
	private ServerSocket server;
	
	public static void main(String[] args){
		MyHttp myHttp = new MyHttp();
		myHttp.start();
	}
	
	public void start(){
		try {
			server = new ServerSocket(9999);
			receive();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
	
	public void receive(){
		try {
			Socket client = server.accept();

			byte[] bts = new byte[20480];
			int len = client.getInputStream().read(bts);
			String requestInfo = new String(bts, 0, len).trim();
			
             // 将请求打印
			System.out.println(requestInfo);
			
            // 响应体
			StringBuilder responseContent = new StringBuilder();
			responseContent.append("<html><head><title>你好</title></head><body>hello world!!<body></html>");
			
             // 响应头
			StringBuilder response = new StringBuilder();
			// HTTP协议版本, 状态代码, 描述
			response.append("HTTP/1.1 200 OK\r\n");
			// 服务器版本信息
			response.append("Server:china Server/0.0.1\r\n");
			response.append("Date:").append(new Date()).append("\r\n");
			response.append("Content-type:text/html;charset=utf-8\r\n");
			response.append("Content-Length:").append(responseContent.toString().getBytes().length).append("\r\n");
			response.append("\r\n");
			response.append(responseContent);
			
			BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(client.getOutputStream()));
			bw.write(response.toString());
			bw.flush();
			bw.close();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
	
	public void stop(){
		
	}
}

  最原始的将html"返回"给浏览器,就是写在字符串中,然后用输出流输出这些字符串。 html写在字符串中,很不方便,所以jsp技术慢慢发展起来。