Skip to content

Instantly share code, notes, and snippets.

@Brutt
Created March 22, 2018 21:45
Show Gist options
  • Save Brutt/2afff87de521cbc2fae07447bdc873d7 to your computer and use it in GitHub Desktop.
Save Brutt/2afff87de521cbc2fae07447bdc873d7 to your computer and use it in GitHub Desktop.
<!doctype html>
<html lang="en">
<head>
<title>404</title>
</head>
<body>
<h1>404 - Page not found!!!</h1>
</body>
</html>
import java.io.*;
import java.net.ServerSocket;
import java.net.Socket;
public class HttpServer {
private String dir;
private int port;
private static final String PAGE_NOT_FOUND = "/404.html";
public void setWebappDir(String dir) {
this.dir = dir;
}
public void setPort(int port){
this.port = port;
}
public void start() {
try {
ServerSocket serverSocket = new ServerSocket(port);
while (true) {
Socket socket = serverSocket.accept();
BufferedReader socketBufferedReader = new BufferedReader(
new InputStreamReader(socket.getInputStream()));
String message = socketBufferedReader.readLine();
String page = null;
if (!message.isEmpty()) {
page = message.split(" ")[1];
}
BufferedWriter socketBufferedWriter = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));
String response = "HTTP/1.1 200 OK\n";
String type = page.substring(page.indexOf(".")+1);
if(type.equals("jpg")){
response += "Content-type: image/jpg\n";
}
response += "\n";
if (!page.isEmpty()) {
response += getFile(page);
}
socketBufferedWriter.write(response);
socketBufferedWriter.close();
}
}
catch(Exception e){
e.printStackTrace();
}
}
private String getFile(String filename) {
String s;
StringBuilder sb = new StringBuilder();
try(BufferedReader br = new BufferedReader(new FileReader(dir + filename)))
{
while((s = br.readLine())!=null){
sb.append(s);
}
}
catch(IOException ex){
System.out.println(ex.getMessage());
return getFile(PAGE_NOT_FOUND);
}
return sb.toString();
}
}
import org.junit.Test;
public class HttpServerTest {
//@Test
public void test() {
HttpServer httpServer = new HttpServer();
httpServer.setPort(3000);
httpServer.setWebappDir("resources/webapp");
httpServer.start();
}
public static void main(String[] args) {
HttpServerTest httpServerTest = new HttpServerTest();
httpServerTest.test();
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment