This commit is contained in:
Minh VU
2025-02-09 15:19:30 +01:00
parent f9d8981119
commit 31f2044753
4 changed files with 62 additions and 8 deletions

View File

@@ -2,7 +2,7 @@
<profile version="1.0"> <profile version="1.0">
<option name="myName" value="Project Default" /> <option name="myName" value="Project Default" />
<inspection_tool class="AutoCloseableResource" enabled="true" level="WARNING" enabled_by_default="true"> <inspection_tool class="AutoCloseableResource" enabled="true" level="WARNING" enabled_by_default="true">
<option name="METHOD_MATCHER_CONFIG" value="java.util.Formatter,format,java.io.Writer,append,com.google.common.base.Preconditions,checkNotNull,org.hibernate.Session,close,java.io.PrintWriter,printf,java.io.PrintStream,printf,java.lang.foreign.Arena,ofAuto,java.lang.foreign.Arena,global,javax.net.SocketFactory,createSocket" /> <option name="METHOD_MATCHER_CONFIG" value="java.util.Formatter,format,java.io.Writer,append,com.google.common.base.Preconditions,checkNotNull,org.hibernate.Session,close,java.io.PrintWriter,printf,java.io.PrintStream,printf,java.lang.foreign.Arena,ofAuto,java.lang.foreign.Arena,global,javax.net.SocketFactory,createSocket,java.util.concurrent.Executors,newFixedThreadPool" />
</inspection_tool> </inspection_tool>
</profile> </profile>
</component> </component>

View File

@@ -19,10 +19,15 @@ public class HTTPHandler implements ClientHandler, Runnable {
BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream())); BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
// lit l'entête de la requête // lit l'entête de la requête
String premiere_ligne=in.readLine(); String[] premiere_ligne=in.readLine().split(" ");
//TODO System.out.println(premiere_ligne.length);
System.out.println(premiere_ligne[0] + " " + premiere_ligne[1]);
// Appelle doGet si la méthode est une méthode GET. // Appelle doGet si la méthode est une méthode GET.
//TODO if (premiere_ligne[0].equals("GET")){
doGet(premiere_ligne[1],out);
}else{
doError(out);
}
}catch (IOException e) { }catch (IOException e) {
System.out.println(e.getMessage()); System.out.println(e.getMessage());
} finally { } finally {
@@ -34,18 +39,26 @@ public class HTTPHandler implements ClientHandler, Runnable {
} }
} }
public void doGet(String pagepath, PrintWriter out) { public void doGet(String pagepath, PrintWriter out) throws IOException {
//Vérifie que le fichier existe //Vérifie que le fichier existe
File f = new File("./www/" + pagepath); File f = new File("./www/" + pagepath);
// si le fichier existe : // si le fichier existe :
if (f.exists() && !f.isDirectory()) { if (f.exists() && !f.isDirectory()) {
//Ecrit l'en-tête de réponse (Code, Content-type, Connexion, ...) //Ecrit l'en-tête de réponse (Code, Content-type, Connexion, ...)
out.println("HTTP/1.1 200 OK"); out.println("HTTP/1.1 200 OK");
out.println("Content-Type: text/html"); out.println("Content-Type: text/html");
//Ecrit le contenu du fichier si il existe
BufferedReader fin = new BufferedReader(new FileReader(f));
String line;
while ((line = fin.readLine()) != null) {
out.println(line);
}
out.println("Connection: close"); out.println("Connection: close");
out.println(); out.println();
}else{ }else{
//Ecrit le contenu du fichier si il existe
// sinon // sinon
// appelle la méthode send404. // appelle la méthode send404.
send404(out); send404(out);
@@ -57,6 +70,7 @@ public class HTTPHandler implements ClientHandler, Runnable {
out.println("HTTP/1.1 404 File Not Found"); out.println("HTTP/1.1 404 File Not Found");
out.println("Content-Type: text/html"); out.println("Content-Type: text/html");
out.println("Connection: close"); out.println("Connection: close");
out.println("");
} }
public void doError(PrintWriter out) { public void doError(PrintWriter out) {
@@ -64,10 +78,21 @@ public class HTTPHandler implements ClientHandler, Runnable {
out.println("HTTP/1.1 405 Method Not Allowed"); out.println("HTTP/1.1 405 Method Not Allowed");
out.println("Content-Type: text/html"); out.println("Content-Type: text/html");
out.println("Connection: close"); out.println("Connection: close");
out.println("");
} }
@Override @Override
public void run() { public void run() {
this.handle(); try {
BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
String message = in.readLine();
System.out.println(message);
String[] a= message.split(" ");
if(a[0].equals("GET")) {
doGet("test.html",new PrintWriter(new OutputStreamWriter(socket.getOutputStream())));
}
} catch (IOException e) {
throw new RuntimeException(e);
}
} }
} }

View File

@@ -1,5 +1,24 @@
package fr.istic.pr.serveur; package fr.istic.pr.serveur;
import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.concurrent.Executor;
import java.util.concurrent.Executors;
public class ServeurHTTP { public class ServeurHTTP {
//TODO public static void main(String[] args) throws IOException {
//Attente sur le port 8080s
int portDuServer = 8080;
try{
ServerSocket serverSocket = new ServerSocket(portDuServer);
Executor service = Executors.newFixedThreadPool(4);
while(true){
Socket socket = serverSocket.accept();
service.execute(new HTTPHandler(socket));
}
}catch(Exception e){
System.out.println(e.getMessage());
}
}
} }

View File

@@ -0,0 +1,10 @@
<!DOCTYPE html>
<html>
<head>
<title>Coucou</title>
</head>
<body>
Cette page est une
page toute simple
</body>
</html>