Security Java Tutorial

import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.PrintStream;
import java.net.ServerSocket;
import java.net.Socket;
import java.net.URL;
import javax.net.ssl.SSLServerSocketFactory;
public class MainClass {
  public static void main(String args[]) throws Exception {
    SSLServerSocketFactory ssf = (SSLServerSocketFactory) SSLServerSocketFactory.getDefault();
    ServerSocket ss = ssf.createServerSocket(443);
    while (true) {
      Socket s = ss.accept();
      PrintStream out = new PrintStream(s.getOutputStream());
      BufferedReader in = new BufferedReader(new InputStreamReader(s.getInputStream()));
      String info = null;
      String request = null;
      String refer = null;
      while ((info = in.readLine()) != null) {
        if (info.startsWith("GET")) {
          request = info;
        }
        if (info.startsWith("Referer:")) {
          refer = info;
        }
        if (info.equals(""))
          break;
      }
      if (request != null) {
        out.println("HTTP/1.0 200 OK\nMIME_version:1.0\nContent_Type:text/html");
        int sp1 = request.indexOf(' ');
        int sp2 = request.indexOf(' ', sp1 + 1);
        String filename = request.substring(sp1 + 2, sp2);
        if (refer != null) {
          sp1 = refer.indexOf(' ');
          refer = refer.substring(sp1 + 1, refer.length());
          if (!refer.endsWith("/")) {
            refer = refer + "/";
          }
          filename = refer + filename;
        }
        URL con = new URL(filename);
        InputStream gotoin = con.openStream();
        int n = gotoin.available();
        byte buf[] = new byte[1024];
        out.println("HTTP/1.0 200 OK\nMIME_version:1.0\nContent_Type:text/html");
        out.println("Content_Length:" + n + "\n");
        while ((n = gotoin.read(buf)) >= 0) {
          out.write(buf, 0, n);
        }
        out.close();
        s.close();
        in.close();
      }
    }
  }
}