Advertisement
gavrilo93

httpdKlasa

Apr 24th, 2015
216
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 4.65 KB | None | 0 0
  1. package primer04;
  2.  
  3. import java.io.BufferedReader;
  4. import java.io.File;
  5. import java.io.FileInputStream;
  6. import java.io.IOException;
  7. import java.io.InputStream;
  8. import java.io.InputStreamReader;
  9. import java.io.OutputStream;
  10. import java.io.PrintStream;
  11. import java.net.InetAddress;
  12. import java.net.ServerSocket;
  13. import java.net.Socket;
  14. import java.net.URLDecoder;
  15. import java.util.ArrayList;
  16.  
  17. /**
  18.  * Jednostavan web server
  19.  */
  20. public class httpd {
  21.     public static ArrayList<String> lista;
  22.     /*public httpd(){
  23.         ArrayList<String> lista = new ArrayList<String>();
  24.     }*/
  25.    
  26.     public static void main(String args[]) throws IOException {
  27.         int port = 80;
  28.         ArrayList<String> lista = new ArrayList<String>();
  29.         @SuppressWarnings("resource")
  30.         ServerSocket srvr = new ServerSocket(port);
  31.  
  32.         System.out.println("httpd running on port: " + port);
  33.         System.out.println("document root is: "
  34.                 + new File(".").getAbsolutePath() + "\n");
  35.  
  36.         Socket skt = null;
  37.  
  38.         while (true) {
  39.             try {
  40.                 skt = srvr.accept();
  41.                 InetAddress addr = skt.getInetAddress();
  42.  
  43.                 //String resource = getResource(skt.getInputStream());
  44.                
  45.                 BufferedReader dis = new BufferedReader(new InputStreamReader(skt.getInputStream()));
  46.                 String s = dis.readLine();
  47.                 System.out.println("\n"+s);
  48.                 System.out.println(s);
  49.  
  50.                 String[] tokens = s.split(" ");
  51.                 String method = tokens[0];
  52.                 String komanda = tokens[1];
  53.                 if (method.equals("GET")) {
  54.                         if(komanda.contains("/dodaj?")){
  55.                             String imePrez = komanda.split("\\?")[1];
  56.                             String ime = imePrez.split("&")[0];
  57.                             int index = ime.indexOf("=");
  58.                             int kraj = ime.length();
  59.                             ime = ime.substring(index+1, kraj).trim();
  60.                             ime = URLDecoder.decode(ime, "UTF-8");
  61.                             String prezime = imePrez.split("&")[1];
  62.                             index = prezime.indexOf("=");
  63.                             int kraj2 = prezime.length();
  64.                             kraj = prezime.lastIndexOf(" ");
  65.                             prezime = prezime.substring(index+1, kraj2);
  66.                             prezime = URLDecoder.decode(prezime, "UTF-8");
  67.                            
  68.                             imePrez = ime +"_"+prezime;
  69.                             System.out.println(imePrez);
  70.                             lista.add(imePrez);
  71.                             System.out.println(lista.get(0));
  72.                
  73.                             //OVDE BACA NULLEXCEPTION
  74.                             posaljiIzlistajOdgovor(skt.getOutputStream());
  75.                            
  76.                         }
  77.                    
  78.                 }
  79.                
  80.                 skt.close();
  81.                 skt = null;
  82.             } catch (IOException ex) {
  83.                 ex.printStackTrace();
  84.             }
  85.         }
  86.     }
  87.      static void posaljiIzlistajOdgovor(OutputStream os)throws IOException{
  88.         PrintStream ps = new PrintStream(os);
  89.         ps.print("HTTP/1.1 200 OK\r\nContent-Type: text/html;charset=UTF-8\r\n\r\n");
  90.         ps.print("<html><head><title>Prijavljeni korisnici</title></head>\n");
  91.         ps.print("<body><h1>Prijavljeni korisnici</h1>\n");
  92.         ps.print("<table border = \"1\"><caption>Prijavljeni korisnici</caption> \n");
  93.         ps.print("<tr><th>Ime:</th><th>Prezime:</th></tr>");
  94.         //I OVDEE ISTO !!!!
  95.         for(int i = 0; i<lista.size(); i++){
  96.             ps.print("<tr>");
  97.             String user = lista.get(i);
  98.             ps.print("<td>"+user.split("_")[0]+"</td>\n");
  99.             ps.print("<td>"+user.split("_")[1]+"</td>\n");
  100.             ps.print("</tr>");
  101.            
  102.         }
  103.        
  104.         ps.print("</table></body></html>\n");
  105.        
  106.        
  107.     }
  108.  
  109.     static String getResource(InputStream is) throws IOException {
  110.         BufferedReader dis = new BufferedReader(new InputStreamReader(is));
  111.         String s = dis.readLine();
  112.         System.out.println(s);
  113.  
  114.         String[] tokens = s.split(" ");
  115.  
  116.         // prva linija HTTP zahteva: METOD /resurs HTTP/verzija
  117.         // obradjujemo samo GET metodu
  118.         String method = tokens[0];
  119.         if (!method.equals("GET")) {
  120.             return null;
  121.         }
  122.        
  123.         ///dodaj?ime=gasa&prezime=gasa
  124.        
  125.         // ignorisemo ostatak zaglavlja
  126.         String s1;
  127.         while (!(s1 = dis.readLine()).equals(""))
  128.             System.out.println(s1);
  129.         String rsrc = "";
  130.         return rsrc;
  131.     }
  132.  
  133.     static void sendResponse(String resource, OutputStream os)
  134.             throws IOException {
  135.         PrintStream ps = new PrintStream(os);
  136.         // zamenimo web separator sistemskim separatorom
  137.         resource = resource.replace('/', File.separatorChar);
  138.         File file = new File(resource);
  139.  
  140.         if (!file.exists()) {
  141.             // ako datoteka ne postoji, vratimo kod za gresku
  142.             ps.print("HTTP/1.0 404 File not found\r\n"
  143.                     + "Content-type: text/html; charset=UTF-8\r\n\r\n<b>404 Нисам нашао:"
  144.                     + file.getName() + "</b>");
  145.             // ps.flush();
  146.             System.out.println("Could not find resource: " + file);
  147.             return;
  148.         }
  149.  
  150.         // ispisemo zaglavlje HTTP odgovora
  151.         ps.print("HTTP/1.0 200 OK\r\n\r\n");
  152.  
  153.         // a, zatim datoteku
  154.         FileInputStream fis = new FileInputStream(file);
  155.         byte[] data = new byte[8192];
  156.         int len;
  157.  
  158.         while ((len = fis.read(data)) != -1) {
  159.             ps.write(data, 0, len);
  160.         }
  161.  
  162.         ps.flush();
  163.         fis.close();
  164.     }
  165. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement