Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package app;
- import java.io.BufferedReader;
- import java.io.FileReader;
- import java.io.IOException;
- import java.io.InputStreamReader;
- import java.io.OutputStreamWriter;
- import java.io.PrintWriter;
- import java.net.ServerSocket;
- import java.net.Socket;
- import java.net.URLDecoder;
- import java.util.ArrayList;
- public class Server {
- public static final int TCP_PORT = 12312;
- public static final String[] GRADOVI = {
- "Beograd",
- "Novi Sad",
- "Niš",
- "Subotica",
- "Kragujevac"
- };
- public static ArrayList<Klub> klubovi = new ArrayList<Klub>();
- public static int izmenaIndex = -1;
- public static void main(String[] args) {
- ServerSocket ss = null;
- try {
- ss = new ServerSocket(TCP_PORT);
- while (true) {
- Socket sock = ss.accept();
- PrintWriter out = new PrintWriter(new OutputStreamWriter(
- sock.getOutputStream(), "UTF8"));
- BufferedReader in = new BufferedReader(new InputStreamReader(
- sock.getInputStream(), "UTF8"));
- String request = in.readLine();
- String userAgent = "";
- String line;
- while(!(line = in.readLine()).equals("")) {
- if(line.contains("User-Agent")) {
- userAgent = line;
- break;
- }
- }
- String[] httpReq = request.split(" ");
- if(httpReq.length != 3) {
- sock.close();
- continue;
- }
- if(!httpReq[0].equals("GET")) {
- sock.close();
- continue;
- }
- String url = httpReq[1];
- url = URLDecoder.decode(url, "UTF8");
- String[] queryParams = url.split("\\?");
- String route = queryParams[0].substring(1); // izbacuje / sa pocetka string-a
- if(!route.equals("")) {
- if(userAgent.contains("Trident")) {
- out.println("HTTP/1.0 200 OK");
- out.println("Content-Type: text/html; charset=utf-8");
- out.println();
- out.println("<html><head><meta charset=\"utf-8\"><title>IE</title></head>");
- out.println("<body><p align=\"center\" style=\"color: red;\">Aplikacija ne podržava vaš "
- + "trenutni internet pregledač.</p></body></html>");
- out.println();
- out.flush();
- }
- }
- switch (route) {
- case "":
- httpHome(out);
- break;
- case "klubovi":
- if (queryParams.length < 2) {
- sock.close();
- continue;
- }
- else
- httpKlubovi(out, queryParams[1].split("&"));
- break;
- case "izmena":
- httpIzmena(out, queryParams[1].split("&"));
- break;
- case "vodeci":
- httpVodeci(out);
- break;
- default:
- httpNotFound(out, route);
- break;
- }
- sock.close();
- }
- } catch (Exception ex) {
- ex.printStackTrace();
- }
- finally {
- if (ss != null)
- try {
- ss.close();
- } catch (IOException e) {
- e.printStackTrace();
- }
- }
- }
- public static void httpNotFound(PrintWriter out, String route) {
- out.println("HTTP/1.0 404 Not Found");
- out.println("Content-Type: text");
- out.println();
- out.println("Url not found.");
- out.println();
- out.flush();
- }
- public static void httpKlubovi(PrintWriter out, String[] args) {
- String arg1 = "";
- String arg2 = "";
- boolean aktivan = false;
- boolean bodoviInd = false;
- if (args.length < 2 && args.length > 3)
- {
- out.println("HTTP/1.0 400 Bad Request");
- out.println("Content-Type: text");
- out.println();
- out.println("Not valid argument length.");
- out.println();
- out.flush();
- return;
- }
- String[] argVal = args[0].split("=");
- if(argVal[0].equals("klub")) {
- bodoviInd = true;
- }
- if(argVal[0].equals("naziv") || argVal[0].equals("klub")) {
- arg1 = argVal[1];
- }
- else {
- arg1 = null;
- }
- argVal = args[1].split("=");
- if(argVal[0].equals("gradovi") || argVal[0].equals("bodovi")) {
- arg2 = argVal[1];
- }
- else {
- arg2 = null;
- }
- if (args.length == 2) {
- aktivan = false;
- }
- else {
- argVal = args[2].split("=");
- if(argVal[0].equals("aktivan")) {
- aktivan = true;
- }
- }
- if (arg1 == null || arg2 == null)
- {
- out.println("HTTP/1.0 400 Bad Argument");
- out.println("Content-Type: text");
- out.println();
- out.println("Not valid arguments.");
- out.println();
- out.flush();
- return;
- }
- if(izmenaIndex != -1) {
- klubovi.get(izmenaIndex).setNaziv(arg1);
- klubovi.get(izmenaIndex).setGrad(arg2);
- klubovi.get(izmenaIndex).setAktivan(aktivan);
- izmenaIndex = -1;
- }
- else {
- if(!bodoviInd)
- klubovi.add(new Klub(arg1, arg2, aktivan));
- else {
- for(Klub k : klubovi) {
- if(k.getKlubGrad().equals(arg1)) {
- k.setBrojBodova(Integer.parseInt(arg2));
- break;
- }
- }
- }
- }
- out.println("HTTP/1.0 200 OK");
- out.println("Content-Type: text/html; charset=utf-8");
- out.println();
- out.println("<html><head><meta charset=\"utf-8\">");
- out.println("<title>Prikaz klubova</title></head><body>");
- out.println("<div align=\"center\">");
- out.println("<h1 style=\"color: blue;\"><b>Tabela</b></h1>");
- out.println("<table border=1>");
- out.println("<tr><th>#</th><th>Klub</th><th>Bodovi</th><th>Akcije</th></tr>");
- for(int i = 0; i < klubovi.size(); i++) {
- out.println(String.format("<tr><td>%d</td>%s<td><a href=\"http://127.0.0.1:12312/izmena?klub=%d\">"
- + "Izmena podataka</a></td></tr>",
- i + 1, klubovi.get(i).getHTMLTableRow(), i));
- }
- out.println("</table>");
- out.println("<a href=\"http://127.0.0.1:" + TCP_PORT + "\">Dodaj novi klub</a><br/><br/>");
- out.println("<a href=\"http://127.0.0.1:" + TCP_PORT + "/vodeci\">Prikaži vodeći klub</a>");
- out.println("<h1 style=\"color: blue;\"><b>Upis bodova</b></h1>");
- out.println("<br/><form accept-charset=\"UTF-8\" action=\"http://127.0.0.1:" + TCP_PORT + "/klubovi\" method=\"GET\">");
- out.println("<table><tr><td>Klub</td><td><select name=\"klub\">");
- String bodovi = "";
- for(Klub k : klubovi) {
- out.println("<option value=\"" + k.getKlubGrad() + "\"");
- if(k.getKlubGrad().equals(arg1)) {
- out.println("selected");
- bodovi = arg2;
- }
- out.println(">" + k.getKlubGrad() + "</option>");
- }
- out.println("</select></td></tr><tr><td>Bodovi</td><td><input type=\"text\""
- + " value=\"" + bodovi + "\" name=\"bodovi\"</td></tr>");
- out.println("<tr><td></td><td><input type=\"submit\" value=\"Unesi\"</td></tr></table></form>");
- out.println("</div>");
- out.println();
- out.flush();
- }
- public static void httpHome(PrintWriter out) {
- try {
- BufferedReader in = new BufferedReader(new FileReader("html/registracija.html"));
- String str;
- out.println("HTTP/1.0 200 OK");
- out.println("Content-Type: text/html; charset=utf-8");
- out.println();
- while ((str = in.readLine()) != null) {
- out.println(str);
- }
- in.close();
- out.println();
- out.flush();
- } catch (IOException e) {
- e.printStackTrace();
- }
- }
- public static void httpVodeci(PrintWriter out) {
- String vodeci = "";
- int bodovi = 0;
- for(Klub k : klubovi) {
- if (bodovi < k.getBrojBodova()) {
- bodovi = k.getBrojBodova();
- vodeci = k.getKlubGrad();
- }
- }
- out.println("HTTP/1.0 200 OK");
- out.println("Content-Type: text/html; charset=utf-8");
- out.println();
- out.println("<html><head><meta charset=\"utf-8\">");
- out.println("<title>Vodeci klub</title></head><body>");
- out.println("<p align=\"center\" style=\"font-size: 30;\">Trenutno vodeći klub: <b>" + vodeci + "</b></p>");
- out.println("</body></html>");
- out.flush();
- }
- public static void httpIzmena(PrintWriter out, String[] args) {
- if(args.length != 1) {
- out.println("HTTP/1.0 400 Bad Request");
- out.println("Content-Type: text");
- out.println();
- out.println("Not valid argument length.");
- out.println();
- out.flush();
- return;
- }
- int index = -1;
- String[] argVal = args[0].split("=");
- if(argVal[0].equals("klub")) {
- index = Integer.parseInt(argVal[1]);
- }
- if(index == -1) {
- out.println("HTTP/1.0 400 Bad Argument");
- out.println("Content-Type: text");
- out.println();
- out.println("Not valid argument.");
- out.println();
- out.flush();
- return;
- }
- izmenaIndex = index;
- Klub izabran = klubovi.get(izmenaIndex);
- out.println("HTTP/1.0 200 OK");
- out.println("Content-Type: text/html; charset=utf-8");
- out.println();
- out.println("<html><head><meta charset=\"utf-8\">");
- out.println("<title>Izmena podataka</title></head><body>");
- out.println("<div align=\"center\"><h1 style=\"color: green;\">Izmena podataka</h1>");
- out.println("<br/><form accept-charset=\"UTF-8\" action=\"http://127.0.0.1:12312/klubovi\"><table><tr><td>Naziv</td><td><input type=\"text\"");
- out.println("value=\"" + izabran.getNaziv() + "\" name=\"naziv\"></td></tr>");
- out.println("<tr><td>Grad</td><td><select name=\"gradovi\">");
- for(String grad : GRADOVI) {
- out.println("<option value=\"" + grad + "\"");
- if (grad.equals(izabran.getGrad())) {
- out.println("selected");
- }
- out.println(">" + grad + "</option>");
- }
- out.println("</select></td></tr><tr><td>Aktivan</td><td><input name=\"aktivan\" type=\"checkbox\"");
- if (izabran.isAktivan())
- out.println("checked");
- out.println("></td></tr><tr><td></td><td><input type=\"submit\" value=\"Izmeni\">");
- out.println("</td></tr/></table></form></body></html>");
- out.flush();
- }
- }
- /*
- <!DOCTYPE html>
- <html>
- <head>
- <meta charset="UTF-8">
- <title>Registracija klubova</title>
- </head>
- <body>
- <div align="center">
- <h1 style="color: red">
- <b>Unos novog kluba</b>
- </h1>
- <br/>
- <form method="GET" action="http://127.0.0.1:12312/klubovi" accept-charset="UTF-8">
- <table>
- <tr>
- <td>Naziv </td>
- <td><input type="text" name="naziv"/></td>
- </tr>
- <tr>
- <td>Grad </td>
- <td>
- <select name="gradovi">
- <option value="Beograd">Beograd</option>
- <option value="Novi Sad">Novi sad</option>
- <option value="Niš">Niš</option>
- <option value="Subotica">Subotica</option>
- <option value="Kragujevac">Kragujevac</option>
- </select>
- </td>
- </tr>
- <tr>
- <td>Aktivan </td>
- <td><input type="checkbox" name="aktivan"/></td>
- </tr>
- <tr>
- <td></td>
- <td><input type="submit" value="Dodaj"></td>
- </tr>
- </table>
- </form>
- </div>
- </body>
- </html>
- */
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement