created http server and new thread

This commit is contained in:
Lukas-Heiligenbrunner 2019-09-13 15:41:40 +02:00
parent 2e0abb2f6e
commit 3b69bc3cc9
4 changed files with 114 additions and 0 deletions

88
src/Webserver.java Normal file
View File

@ -0,0 +1,88 @@
import com.sun.net.httpserver.Headers;
import com.sun.net.httpserver.HttpExchange;
import com.sun.net.httpserver.HttpHandler;
import com.sun.net.httpserver.HttpServer;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.net.InetSocketAddress;
import java.net.URI;
public class Webserver{
public void startserver(){
System.out.println("starting server");
HttpServer server = null;
try {
server = HttpServer.create(new InetSocketAddress(8000), 0);
} catch (IOException e) {
e.printStackTrace();
}
server.createContext("/", new MyHandler());
//receiving get and post data todo
server.createContext("/senddata/test", new HttpHandler() {
@Override
public void handle(HttpExchange httpExchange) throws IOException {
if (httpExchange.getRequestMethod().equals("GET")){
String query = httpExchange.getRequestURI().getQuery();
System.out.println(query);
}
}
});
server.setExecutor(null); // creates a default executor
server.start();
}
static class MyHandler implements HttpHandler {
@Override
public void handle(HttpExchange t) throws IOException {
System.out.println("a new request...");
String root = "./wwwroot";
URI uri = t.getRequestURI();
String path;
if (uri.getPath().equals("/")){
path = "/index.html";
}else{
path = uri.getPath();
}
System.out.println("looking for: "+ root + path);
File file = new File(root + path).getCanonicalFile();
if (!file.isFile()) {
// Object does not exist or is not a file: reject with 404 error.
String response = "404 (Not Found)\n";
t.sendResponseHeaders(404, response.length());
OutputStream os = t.getResponseBody();
os.write(response.getBytes());
os.close();
} else {
// Object exists and is a file: accept with response code 200.
String mime = "text/html";
if(path.substring(path.length()-3).equals(".js")) mime = "application/javascript";
if(path.substring(path.length()-3).equals("css")) mime = "text/css";
Headers h = t.getResponseHeaders();
h.set("Content-Type", mime);
t.sendResponseHeaders(200, 0);
OutputStream os = t.getResponseBody();
FileInputStream fs = new FileInputStream(file);
final byte[] buffer = new byte[0x10000];
int count = 0;
while ((count = fs.read(buffer)) >= 0) {
os.write(buffer,0,count);
}
fs.close();
os.close();
}
}
}
}

15
src/main.java Normal file
View File

@ -0,0 +1,15 @@
public class main {
public static void main(String[] args) {
Thread mythread = new Thread(new Runnable() {
@Override
public void run() {
new Webserver().startserver();
}
});
mythread.start();
System.out.println("thread started");
}
}

3
wwwroot/css/index.css Normal file
View File

@ -0,0 +1,3 @@
.test{
background-color: #FF0000;
}

8
wwwroot/index.html Normal file
View File

@ -0,0 +1,8 @@
<html>
<head>
<link rel="stylesheet" type="text/css" href="css/index.css">
</head>
<body class="test">
hello there
</body>
</html>