[DUVIDA INICIANTE] ServidorHTTP simples

Olá pessoal, estou criando meu primeito servidor HTTP o qual segue abaixo o esqueleto dele. Agora estou precisando fazer com que o servidor receba o pedido e não estou sabendo como fazer. Sei que eu teria de usar o BufferedReader, mas nao to sabendo como usar. Tipo,sei que teria de ser o nome do arquivo requisitado, mas eu pego isso de onde?

Desde já fico agradecido e to muito ansioso pra aprender isso. Vlw.

import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;

public class Servidor {

    public static void main(String[] args) {
    try {
        // cria um socket e associa a porta 9999
        ServerSocket serversocket = new ServerSocket(9999);
        while (true) {
            System.out.println("Servidor em execução... \nAguardando conexão...");
            Socket socket = serversocket.accept(); // aguarda conexao do cliente
            // para o recebimento e envio de msg atraves do socket
            InputStream in = socket.getInputStream();
            OutputStream out = socket.getOutputStream();
            byte[] requisicao = new byte[100];

            in.read(requisicao); // recebe uma msg de requisicao do cliente
            String msgReq = new String(requisicao);
            System.out.println("Mensagem recebida: " + msgReq);

            // identificar o recurso solicitado (quebrar a msg de requisicao                                                                              
            // para descobrir o recurso (pagina HTML)
            try {
            // declara a variavel para ler dados do arquivo
            BufferedReader bufferLeitura;
            // abre o arquivo para leitura 
            bufferLeitura = new BufferedReader (new FileReader(requisicao));
            System.out.println("Arquivo foi aberto para leitura!");
            // obtem a primeira linha do arquivo
            String linhaLida = bufferLeitura.readLine();
            // enquanto a linha do arquivo nao for vazia 
            while (linhaLida != null) {
                String campos[] = linhaLida.split(";");
                // split divide a string (linhaLida) de acordo com o separador ";"
                // e obtem o nome, idade e salario e os armazena no vetor campos: 
                // campos[0] contera o nome, campos[1] contera a idade, campos[2] 
                // contera o salario

                System.out.println ("Nome: " + campos[0]);
                System.out.println ("Idade: " + campos[1]);
                System.out.println ("Salario: " + campos[2]);

                // le a proxima linha 
                linhaLida = bufferLeitura.readLine();
                }
                bufferLeitura.close();
                System.out.println ("Dados lidos. O arquivo foi fechado.");
                } catch (IOException e) {
                    // em caso de erro
                    System.out.println ("Ocorreu um erro durante a abertura ou leitura do arquivo! " + e.getMessage());
         }


               // criar a resposta HTTP (construir o header e o corpo da msg de 
               // resposta) -chamar o metodo geraRespostaHTTP


               // envia a resposta ao cliente 


              // fechando a conexão com o cliente
              socket.close();
              }

        } catch (Exception err) {
           System.err.println(err);
        }
}
public static String geraRespostaHTTP(String recurso) {
    StringBuilder resposta = new StringBuilder();
    // Criando o header, a primeira linha deve devolver o codigo 200 OK
    resposta.append("HTTP/1.1 200 OK").append("\n");
    resposta.append("Server: Test Server").append("\n");
    resposta.append("Connection: Close").append("\n");
    resposta.append("Content-Type: text/html; charset=ISO-8859-1").append("\n");
    resposta.append("\n");

    // fazer aqui a leitura do arquivo html de acordo com o recurso solicitado (nome                                                      
    // do arquivo HTML) concatenando o todo o conteudo do arquivo no corpo da msg de 
    // resposta (objeto resposta)


    return resposta.toString();
    }
}