Hello all, I have created a web server in Java. It serves files from a directory. It is working fine, everything is good, except when I try to access files which have images in them, it does not load them up.
Here is the code.
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;
public class Main {
    /**
     * @param args
     * @throws Exception 
     */
    public static void main(String[] args) throws Exception {
        // TODO Auto-generated method stub
         new Main().runserver();
    }
     ServerSocket serverSocket;
    public void runserver() throws Exception {
        serverSocket = new ServerSocket(8080);
        acceptRequest();
    }
    private void acceptRequest() throws Exception{
        while(true){
            Socket s = serverSocket.accept();
            ConnectionHandler ch = new ConnectionHandler(s);
            ch.start();
        }
    }
       public class ConnectionHandler extends Thread {
           PrintWriter pw;
           BufferedReader br;
           Socket s;
           public ConnectionHandler(Socket s) throws Exception{
               this.s = s;
               br = new BufferedReader(new InputStreamReader(s.getInputStream()));
               pw = new PrintWriter(s.getOutputStream()); 
           }
           @Override
        public void run() {
               try{
               String reqS = "";
               while (br.ready() || reqS.length() == 0){
                   reqS += (char) br.read();
        }
               System.out.println(reqS);
               HttpRequest req = new HttpRequest(reqS);
               HttpResponse res = new HttpResponse(req);
               pw.write(res.response.toCharArray());
               pw.close();
               br.close();
               s.close();
               }
               catch (Exception e) {
                   e.printStackTrace(); 
                   }
               }
       }
       public class HttpRequest{
           public String filename ;
        public HttpRequest(String request){
               String lines[] = request.split("\n");
               lines = lines[0].split(" ");
               filename = lines[1];
           } 
       }
             public class HttpResponse{
                 HttpRequest req;
                 String root;
                 String response;
                 public HttpResponse(HttpRequest request){
                     req=request;
                     root = "D:/";
                     File f  = new File(root + req.filename);
                     try{
                     response+= "HTTP/1.1 200 \r\n";
                     response+= "Apache Server /1.0";
                     response+= "Content-Type: text/html \r\n";
                     response+="Connection: close \r\n";
                     response+= "Content-Length:" + f.length() + "\r\n";
                     response+= "\r\n";
                     FileInputStream fis = new FileInputStream(f);
                     int s;
                     while ((s = fis.read()) != -1){
                         response += (char)s ;
                     }
                     fis.close(); 
                 }catch(FileNotFoundException fg){
                     response = response.replace("200", "404");
                 }
                     catch(IOException e ){
                         response  = response.replace("200", "500");
                         e.printStackTrace();
                     }
             }
}
}
 
    