-
-
Save Brutt/2afff87de521cbc2fae07447bdc873d7 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<!doctype html> | |
<html lang="en"> | |
<head> | |
<title>404</title> | |
</head> | |
<body> | |
<h1>404 - Page not found!!!</h1> | |
</body> | |
</html> |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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(); | |
} | |
} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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