# HG changeset patch # User František Kučera # Date 1243785195 -7200 # Node ID 97bb16063d9e33e6850f71a0dbc4a174d2faa9b0 # Parent dceaaefb19464672bfba30b0ad75cadcdd3d75e6 Přechod ze servletu na JSP – zbavení se servletu a HTML uvnitř javového kódu. diff -r dceaaefb1946 -r 97bb16063d9e java/sql-vyuka/src/java/cz/frantovo/sql/vyuka/Html.java --- a/java/sql-vyuka/src/java/cz/frantovo/sql/vyuka/Html.java Sun May 31 17:46:11 2009 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,14 +0,0 @@ -package cz.frantovo.sql.vyuka; - -/** - * - * @author fiki - */ -public class Html { - - /** Escapuje HTML značky v textu. */ - public static String escapuj(String text) { - /** TODO: dopsat! */ - return text; - } -} diff -r dceaaefb1946 -r 97bb16063d9e java/sql-vyuka/src/java/cz/frantovo/sql/vyuka/ajax/Ajax.java --- a/java/sql-vyuka/src/java/cz/frantovo/sql/vyuka/ajax/Ajax.java Sun May 31 17:46:11 2009 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,32 +0,0 @@ -package cz.frantovo.sql.vyuka.ajax; - -import cz.frantovo.sql.vyuka.dao.HistorieDAO; -import cz.frantovo.sql.vyuka.dao.PiskovisteDAO; -import cz.frantovo.sql.vyuka.dto.Uzivatel; -import cz.frantovo.sql.vyuka.dto.VysledekSQL; - -/** - * Pomocník servletu. Vrací HTML části stránek. - * @author fiki - */ -public class Ajax { - - /** - * @return Historie SQL příkazů daného uživatele. - */ - public String getHistorie(Uzivatel uzivatel) { - HistorieDAO h = new HistorieDAO(); - VysledekSQL v = h.nactiHistorii(uzivatel); - return v.getHtml(); - } - - /** - * Vykoná zadaný SQL příkaz v databázi. - * @return Výsledek dotazu – tabulka, hláška nebo chyba. - */ - public String geSQLVysledek(String sql, Uzivatel uzivatel) { - PiskovisteDAO p = new PiskovisteDAO(); - VysledekSQL v = p.vykonejSQL(sql, uzivatel); - return v.getHtml(); - } -} diff -r dceaaefb1946 -r 97bb16063d9e java/sql-vyuka/src/java/cz/frantovo/sql/vyuka/ajax/Servlet.java --- a/java/sql-vyuka/src/java/cz/frantovo/sql/vyuka/ajax/Servlet.java Sun May 31 17:46:11 2009 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,128 +0,0 @@ -package cz.frantovo.sql.vyuka.ajax; - -import cz.frantovo.sql.vyuka.dto.Uzivatel; -import java.io.IOException; -import java.io.PrintWriter; -import javax.servlet.ServletException; -import javax.servlet.http.HttpServlet; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; - -/** - * Servlet pro vyřizování AJAXových požadavků. - * @author fiki - */ -public class Servlet extends HttpServlet { - - private static final long serialVersionUID = 9102108273105288056L; - - private enum akce { - - /** Provede SQL dotaz. */ - vykonat, - /** Vypíše historii SQL příkazů daného uživatele. */ - historie, - /** Nápověda – průvodce */ - napoveda, - /** Vypíše nějaké nepotřebné informace. */ - test, - /** Pokud je požadovaná akce nesmysl. */ - chyba - } - - /** - * Processes requests for both HTTP GET and POST methods. - * @param request servlet request - * @param response servlet response - * @throws ServletException if a servlet-specific error occurs - * @throws IOException if an I/O error occurs - */ - protected void processRequest(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { - - /** Používáme pouze UTF-8 */ - response.setContentType("text/html;charset=UTF-8"); - request.setCharacterEncoding("UTF-8"); - - PrintWriter out = response.getWriter(); - - try { - - akce parametrAkce = akce.chyba; - try { - parametrAkce = akce.valueOf(request.getParameter("akce")); - } catch (Exception e) { - /** Chyba nebo podvržený AJAXový požadavek → zobrazíme chybovou hlášku */ - } - - - Ajax a = new Ajax(); - - Uzivatel uzivatel = new Uzivatel(request.getRequestedSessionId(), request.getRemoteAddr()); - - switch (parametrAkce) { - case vykonat: - out.println(a.geSQLVysledek(request.getParameter("sql"), uzivatel)); - break; - case historie: - out.println(a.getHistorie(uzivatel)); - break; - case napoveda: - out.println("

Nápověda bude…

"); - break; - case test: - out.println("

AJAX jede!

"); - out.println("
    "); - out.println("
  1. Metoda: " + request.getMethod() + "
  2. "); - out.println("
  3. Host: " + request.getRemoteHost() + "
  4. "); - out.println("
  5. Adresa: " + request.getRemoteAddr() + "
  6. "); - out.println("
  7. Akce: " + request.getParameter("akce") + "
  8. "); - out.println("
  9. SQL: " + request.getParameter("sql") + "
  10. "); - out.println("
  11. Sezení: " + request.getRequestedSessionId() + "
  12. "); - out.println("
  13. URL: " + request.getRequestURL().toString() + "
  14. "); - out.println("
"); - break; - case chyba: - out.println("

chyba

"); - break; - } - } finally { - out.close(); - } - } - - // - /** - * Handles the HTTP GET method. - * @param request servlet request - * @param response servlet response - * @throws ServletException if a servlet-specific error occurs - * @throws IOException if an I/O error occurs - */ - @Override - protected void doGet(HttpServletRequest request, HttpServletResponse response) - throws ServletException, IOException { - processRequest(request, response); - } - - /** - * Handles the HTTP POST method. - * @param request servlet request - * @param response servlet response - * @throws ServletException if a servlet-specific error occurs - * @throws IOException if an I/O error occurs - */ - @Override - protected void doPost(HttpServletRequest request, HttpServletResponse response) - throws ServletException, IOException { - processRequest(request, response); - } - - /** - * Returns a short description of the servlet. - * @return a String containing servlet description - */ - @Override - public String getServletInfo() { - return "Servlet pro zpracování AJAXových požadavků."; - }// -} diff -r dceaaefb1946 -r 97bb16063d9e java/sql-vyuka/src/java/cz/frantovo/sql/vyuka/dto/Hlaska.java --- a/java/sql-vyuka/src/java/cz/frantovo/sql/vyuka/dto/Hlaska.java Sun May 31 17:46:11 2009 +0200 +++ b/java/sql-vyuka/src/java/cz/frantovo/sql/vyuka/dto/Hlaska.java Sun May 31 17:53:15 2009 +0200 @@ -1,13 +1,18 @@ package cz.frantovo.sql.vyuka.dto; -import cz.frantovo.sql.vyuka.Html; - /** * Hláška úspěšného provedení. * @author fiki */ -public class Hlaska implements HtmlObjekt { +public class Hlaska { + public enum Typ { + + OK, + Tip, + Varovani, + Chyba + } private String text; private Typ typ; private boolean escapovat = true; @@ -35,16 +40,6 @@ this.escapovat = true; } - public String getHtml() { - String hodnota; - if (isEscapovat()) { - hodnota = Html.escapuj(text); - } else { - hodnota = text; - } - return "

" + hodnota + "

"; - } - public String getText() { return text; } @@ -68,12 +63,4 @@ public void setEscapovat(boolean escapovat) { this.escapovat = escapovat; } - - public enum Typ { - - OK, - Tip, - Varovani, - Chyba - } } diff -r dceaaefb1946 -r 97bb16063d9e java/sql-vyuka/src/java/cz/frantovo/sql/vyuka/dto/HtmlObjekt.java --- a/java/sql-vyuka/src/java/cz/frantovo/sql/vyuka/dto/HtmlObjekt.java Sun May 31 17:46:11 2009 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,10 +0,0 @@ -package cz.frantovo.sql.vyuka.dto; - -/** - * HTML objekt. - * @author fiki - */ -public interface HtmlObjekt { - - public String getHtml(); -} diff -r dceaaefb1946 -r 97bb16063d9e java/sql-vyuka/src/java/cz/frantovo/sql/vyuka/dto/Tabulka.java --- a/java/sql-vyuka/src/java/cz/frantovo/sql/vyuka/dto/Tabulka.java Sun May 31 17:46:11 2009 +0200 +++ b/java/sql-vyuka/src/java/cz/frantovo/sql/vyuka/dto/Tabulka.java Sun May 31 17:53:15 2009 +0200 @@ -1,6 +1,5 @@ package cz.frantovo.sql.vyuka.dto; -import cz.frantovo.sql.vyuka.Html; import java.util.ArrayList; import java.util.Collection; @@ -8,58 +7,12 @@ * Tabulka, která je výsledkem SQL dotazu. * @author fiki */ -public class Tabulka implements HtmlObjekt { +public class Tabulka { private String[] zahlavi; private String zahlaviTip; private Collection hodnoty = new ArrayList(); - public String getHtml() { - - if (getZahlavi() == null || getHodnoty() == null || getZahlavi().length < 1) { - return "

Chybná tabulka

"; - } else { - - StringBuffer html = new StringBuffer(); - - html.append(""); - - - html.append(""); - html.append(""); - for (String z : getZahlavi()) { - html.append(""); - } - html.append(""); - html.append(""); - - - html.append(""); - for (Object[] hh : getHodnoty()) { - html.append(""); - for (Object h : hh) { - html.append(formatujBunku(h)); - } - html.append(""); - } - html.append(""); - - html.append("
" + Html.escapuj(z) + "
"); - - - return html.toString(); - } - } - - private String formatujBunku(Object o) { - /** TODO: podporovat i jiné typy */ - if (o instanceof Integer) { - return "" + Html.escapuj(String.valueOf(o)) + ""; - } else { - return "" + Html.escapuj(String.valueOf(o)) + ""; - } - } - public String[] getZahlavi() { return zahlavi; } diff -r dceaaefb1946 -r 97bb16063d9e java/sql-vyuka/src/java/cz/frantovo/sql/vyuka/dto/VysledekSQL.java --- a/java/sql-vyuka/src/java/cz/frantovo/sql/vyuka/dto/VysledekSQL.java Sun May 31 17:46:11 2009 +0200 +++ b/java/sql-vyuka/src/java/cz/frantovo/sql/vyuka/dto/VysledekSQL.java Sun May 31 17:53:15 2009 +0200 @@ -4,10 +4,11 @@ import java.util.Collection; /** - * Výsledek SQL dotazu + * Výsledek SQL dotazu. + * Obsahuje tabulky a hlášky. * @author fiki */ -public class VysledekSQL implements HtmlObjekt { +public class VysledekSQL { private Collection tabulky = new ArrayList(); private Collection hlasky = new ArrayList(); @@ -19,18 +20,4 @@ public Collection getHlasky() { return hlasky; } - - public String getHtml() { - StringBuffer html = new StringBuffer(); - - for (Tabulka t : tabulky) { - html.append(t.getHtml()); - } - - for (Hlaska h : hlasky) { - html.append(h.getHtml()); - } - - return html.toString(); - } } diff -r dceaaefb1946 -r 97bb16063d9e java/sql-vyuka/src/java/cz/frantovo/sql/vyuka/web/Ajax.java --- a/java/sql-vyuka/src/java/cz/frantovo/sql/vyuka/web/Ajax.java Sun May 31 17:46:11 2009 +0200 +++ b/java/sql-vyuka/src/java/cz/frantovo/sql/vyuka/web/Ajax.java Sun May 31 17:53:15 2009 +0200 @@ -17,7 +17,7 @@ /** * Nastaví informace o klientovi (uživateli). * @param ipAdresa IP adresa, ze které přišel HTTP požadavek - * @param ipPresmerovano HTTP hlavička x-forwarded-for + * @param ipPresmerovano HTTP hlavička x-forwarded-for (přidává proxy). * @param idSezeni javovská HTTP relace */ public void setKlient(String ipAdresa, String ipPresmerovano, String idSezeni) {