Заголовки - это просто строки после начальной операции GET / POST / *. Последний заголовок отделяется от содержимого пустой строкой. Поэтому все, что вам нужно сделать (как на стороне клиента, так и на стороне сервера), это написать несколько строк в запросе / ответе перед содержимым.
HTTP/1.0 200 OK
Date: Fri, 31 Dec 1999 23:59:59 GMT
Content-Type: text/html
Content-Length: 1354
<html>
<body>
...
(more file contents)
P.S. В Java есть встроенный HTTP-сервер. Знаете ли вы, что?
com.sun.net.HttpServer:
HttpServer httpServer = HttpServer.create(new InetSocketAddress(port), 5);
httpServer.createContext("/", new MyRequestHandler());
httpServer.setExecutor(Executors.newCachedThreadPool());
httpServer.start();