Přechod ze servletu na JSP – přidání JSPX.
authorFrantišek Kučera <franta-hg@frantovo.cz>
Sun May 31 17:46:11 2009 +0200 (2009-05-31)
changeset 24dceaaefb1946
parent 23 6bbbd371e813
child 25 97bb16063d9e
Přechod ze servletu na JSP – přidání JSPX.
java/sql-vyuka/src/java/cz/frantovo/sql/vyuka/ajax/Servlet.java
java/sql-vyuka/src/java/cz/frantovo/sql/vyuka/dao/HistorieDAO.java
java/sql-vyuka/src/java/cz/frantovo/sql/vyuka/dto/Hlaska.java
java/sql-vyuka/src/java/cz/frantovo/sql/vyuka/dto/Tabulka.java
java/sql-vyuka/src/java/cz/frantovo/sql/vyuka/dto/Uzivatel.java
java/sql-vyuka/src/java/cz/frantovo/sql/vyuka/preklady_cs.properties
java/sql-vyuka/src/java/cz/frantovo/sql/vyuka/web/Ajax.java
java/sql-vyuka/web/ajax.jspx
java/sql-vyuka/web/hlavni.js
     1.1 --- a/java/sql-vyuka/src/java/cz/frantovo/sql/vyuka/ajax/Servlet.java	Sat May 30 22:54:44 2009 +0200
     1.2 +++ b/java/sql-vyuka/src/java/cz/frantovo/sql/vyuka/ajax/Servlet.java	Sun May 31 17:46:11 2009 +0200
     1.3 @@ -57,7 +57,7 @@
     1.4  
     1.5              Ajax a = new Ajax();
     1.6  
     1.7 -            Uzivatel uzivatel = new Uzivatel(request.getRequestedSessionId(), request.getRemoteHost());
     1.8 +            Uzivatel uzivatel = new Uzivatel(request.getRequestedSessionId(), request.getRemoteAddr());
     1.9  
    1.10              switch (parametrAkce) {
    1.11                  case vykonat:
     2.1 --- a/java/sql-vyuka/src/java/cz/frantovo/sql/vyuka/dao/HistorieDAO.java	Sat May 30 22:54:44 2009 +0200
     2.2 +++ b/java/sql-vyuka/src/java/cz/frantovo/sql/vyuka/dao/HistorieDAO.java	Sun May 31 17:46:11 2009 +0200
     2.3 @@ -60,7 +60,8 @@
     2.4          Tabulka t = new Tabulka();
     2.5          String[] zahlavi = {"Kdy", "SQL příkaz"};
     2.6          t.setZahlavi(zahlavi);
     2.7 -
     2.8 +        /** TODO: lokalizace */
     2.9 +        t.setZahlaviTip("TODO: Překlad");
    2.10  
    2.11          Connection db = getSpojeni(DATABAZE.APLIKACE);
    2.12          if (db == null) {
     3.1 --- a/java/sql-vyuka/src/java/cz/frantovo/sql/vyuka/dto/Hlaska.java	Sat May 30 22:54:44 2009 +0200
     3.2 +++ b/java/sql-vyuka/src/java/cz/frantovo/sql/vyuka/dto/Hlaska.java	Sun May 31 17:46:11 2009 +0200
     3.3 @@ -10,7 +10,7 @@
     3.4  
     3.5      private String text;
     3.6      private Typ typ;
     3.7 -    private boolean escapovat;
     3.8 +    private boolean escapovat = true;
     3.9  
    3.10      /**
    3.11       * SQL hláška
     4.1 --- a/java/sql-vyuka/src/java/cz/frantovo/sql/vyuka/dto/Tabulka.java	Sat May 30 22:54:44 2009 +0200
     4.2 +++ b/java/sql-vyuka/src/java/cz/frantovo/sql/vyuka/dto/Tabulka.java	Sun May 31 17:46:11 2009 +0200
     4.3 @@ -11,6 +11,7 @@
     4.4  public class Tabulka implements HtmlObjekt {
     4.5  
     4.6      private String[] zahlavi;
     4.7 +    private String zahlaviTip;
     4.8      private Collection<Object[]> hodnoty = new ArrayList<Object[]>();
     4.9  
    4.10      public String getHtml() {
    4.11 @@ -67,6 +68,14 @@
    4.12          this.zahlavi = zahlavi;
    4.13      }
    4.14  
    4.15 +    public String getZahlaviTip() {
    4.16 +        return zahlaviTip;
    4.17 +    }
    4.18 +
    4.19 +    public void setZahlaviTip(String zahlaviTip) {
    4.20 +        this.zahlaviTip = zahlaviTip;
    4.21 +    }
    4.22 +
    4.23      public Collection<Object[]> getHodnoty() {
    4.24          return hodnoty;
    4.25      }
     5.1 --- a/java/sql-vyuka/src/java/cz/frantovo/sql/vyuka/dto/Uzivatel.java	Sat May 30 22:54:44 2009 +0200
     5.2 +++ b/java/sql-vyuka/src/java/cz/frantovo/sql/vyuka/dto/Uzivatel.java	Sun May 31 17:46:11 2009 +0200
     5.3 @@ -14,6 +14,9 @@
     5.4          this.ipAdresa = ipAdresa;
     5.5      }
     5.6  
     5.7 +    public Uzivatel() {
     5.8 +    }
     5.9 +
    5.10      public String getIdSezeni() {
    5.11          return idSezeni;
    5.12      }
     6.1 --- a/java/sql-vyuka/src/java/cz/frantovo/sql/vyuka/preklady_cs.properties	Sat May 30 22:54:44 2009 +0200
     6.2 +++ b/java/sql-vyuka/src/java/cz/frantovo/sql/vyuka/preklady_cs.properties	Sun May 31 17:46:11 2009 +0200
     6.3 @@ -18,6 +18,11 @@
     6.4  js.probihaSQL=Prob\u00EDh\u00E1 zpracov\u00E1n\u00ED SQL p\u0159\u00EDkazu\u2026
     6.5  js.probihaHistorie=Na\u010D\u00EDt\u00E1 se historie\u2026
     6.6  
     6.7 -licence.program=Program je vyd\u00E1n pod licenc\u00ED: 
     6.8 +licence.program=Program je vyd\u00E1n pod licenc\u00ED:
     6.9  licence.agpl=GNU Affero GPL
    6.10 -licence.zdrojaky=Zdrojov\u00E9 k\u00F3dy ke sta\u017Een\u00ED: 
    6.11 +licence.zdrojaky=Zdrojov\u00E9 k\u00F3dy ke sta\u017Een\u00ED:
    6.12 +
    6.13 +vysledek.razeniTip=Chce\u0161 set\u0159\u00EDdit v\u00FDsledek podle n\u011Bjak\u00E9ho sloupce? Co takhle ORDER BY sloupec.
    6.14 +historie.kdy=Kdy
    6.15 +historie.prikaz=SQL p\u0159\u00EDkaz
    6.16 +historie.zahlaviTip=Posledn\u00ED proveden\u00E9 SQL p\u0159\u00EDkazy.
     7.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     7.2 +++ b/java/sql-vyuka/src/java/cz/frantovo/sql/vyuka/web/Ajax.java	Sun May 31 17:46:11 2009 +0200
     7.3 @@ -0,0 +1,52 @@
     7.4 +package cz.frantovo.sql.vyuka.web;
     7.5 +
     7.6 +import cz.frantovo.sql.vyuka.dao.HistorieDAO;
     7.7 +import cz.frantovo.sql.vyuka.dao.PiskovisteDAO;
     7.8 +import cz.frantovo.sql.vyuka.dto.Uzivatel;
     7.9 +import cz.frantovo.sql.vyuka.dto.VysledekSQL;
    7.10 +
    7.11 +/**
    7.12 + * Webová beana, která poskytuje data Ajaxovému JSPčku.
    7.13 + * @author fiki
    7.14 + */
    7.15 +public class Ajax {
    7.16 +
    7.17 +    private final Uzivatel uzivatel = new Uzivatel();
    7.18 +    private String sqlPrikaz;
    7.19 +
    7.20 +    /**
    7.21 +     * Nastaví informace o klientovi (uživateli).
    7.22 +     * @param ipAdresa IP adresa, ze které přišel HTTP požadavek
    7.23 +     * @param ipPresmerovano HTTP hlavička x-forwarded-for
    7.24 +     * @param idSezeni javovská HTTP relace
    7.25 +     */
    7.26 +    public void setKlient(String ipAdresa, String ipPresmerovano, String idSezeni) {
    7.27 +        if ("127.0.0.1".equals(ipAdresa) && ipPresmerovano != null) {
    7.28 +            uzivatel.setIpAdresa(ipPresmerovano);
    7.29 +        } else {
    7.30 +            uzivatel.setIpAdresa(ipAdresa);
    7.31 +        }
    7.32 +        uzivatel.setIdSezeni(idSezeni);
    7.33 +    }
    7.34 +
    7.35 +    public void setSqlPrikaz(String sqlPrikaz) {
    7.36 +        this.sqlPrikaz = sqlPrikaz;
    7.37 +    }
    7.38 +
    7.39 +    /**
    7.40 +     * @return Historie SQL příkazů daného uživatele.
    7.41 +     */
    7.42 +    public VysledekSQL getHistorie() {
    7.43 +        HistorieDAO h = new HistorieDAO();
    7.44 +        return h.nactiHistorii(uzivatel);
    7.45 +    }
    7.46 +
    7.47 +    /**
    7.48 +     * Vykoná zadaný SQL příkaz v databázi.
    7.49 +     * @return Výsledek dotazu – tabulka, hláška nebo chyba.
    7.50 +     */
    7.51 +    public VysledekSQL getSQLVysledek() {
    7.52 +        PiskovisteDAO p = new PiskovisteDAO();
    7.53 +        return p.vykonejSQL(sqlPrikaz, uzivatel);
    7.54 +    }
    7.55 +}
     8.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     8.2 +++ b/java/sql-vyuka/web/ajax.jspx	Sun May 31 17:46:11 2009 +0200
     8.3 @@ -0,0 +1,63 @@
     8.4 +<?xml version="1.0" encoding="UTF-8"?>
     8.5 +<jsp:root xmlns:jsp="http://java.sun.com/JSP/Page"
     8.6 +          xmlns:fmt="http://java.sun.com/jsp/jstl/fmt"
     8.7 +          xmlns:c="http://java.sun.com/jsp/jstl/core"
     8.8 +          version="2.0">
     8.9 +    <jsp:directive.page contentType="text/html" pageEncoding="UTF-8"/>
    8.10 +    <fmt:setBundle basename="cz.frantovo.sql.vyuka.preklady" scope="application"/>
    8.11 +    <jsp:useBean id="ajax" class="cz.frantovo.sql.vyuka.web.Ajax" scope="request"/>
    8.12 +
    8.13 +    <jsp:scriptlet>
    8.14 +        request.setCharacterEncoding("UTF-8");
    8.15 +        ajax.setKlient(request.getRemoteAddr(), request.getHeader("x-forwarded-for"), request.getRequestedSessionId());
    8.16 +    </jsp:scriptlet>
    8.17 +
    8.18 +    <c:choose>
    8.19 +        <!-- Akce: Historie a vykonání SQL příkazu -->
    8.20 +        <c:when test="${param.akce == 'historie' || param.akce == 'vykonat'}">
    8.21 +            <c:choose>
    8.22 +                <c:when test="${param.akce == 'historie'}">
    8.23 +                    <c:set var="vysledek" value="${ajax.historie}" scope="request"/>
    8.24 +                </c:when>
    8.25 +                <c:when test="${param.akce == 'vykonat'}">
    8.26 +                    <jsp:setProperty name="ajax" property="sqlPrikaz" value="${param.sql}"/>
    8.27 +                    <c:set var="vysledek" value="${ajax.SQLVysledek}" scope="request"/>
    8.28 +                </c:when>
    8.29 +            </c:choose>
    8.30 +
    8.31 +            <!-- Tabulky -->
    8.32 +            <c:forEach var="tabulka" items="${vysledek.tabulky}">
    8.33 +                <table>
    8.34 +                    <thead title="${tabulka.zahlaviTip}">
    8.35 +                        <tr>
    8.36 +                            <c:forEach var="zahlavi" items="${tabulka.zahlavi}">
    8.37 +                                <td><c:out value="${zahlavi}"/></td>
    8.38 +                            </c:forEach>
    8.39 +                        </tr>
    8.40 +                    </thead>
    8.41 +                    <tbody>
    8.42 +                        <c:forEach var="radek" items="${tabulka.hodnoty}">
    8.43 +                            <tr>
    8.44 +                                <c:forEach var="bunka" items="${radek}">
    8.45 +                                    <td><c:out value="${bunka}" /></td>
    8.46 +                                </c:forEach>
    8.47 +                            </tr>
    8.48 +                        </c:forEach>
    8.49 +                    </tbody>
    8.50 +                </table>
    8.51 +            </c:forEach>
    8.52 +
    8.53 +            <!-- Hlášky -->
    8.54 +            <c:forEach var="hlaska" items="${vysledek.hlasky}">
    8.55 +                <p class="vysledek${hlaska.typ}">
    8.56 +                    <c:out value="${hlaska.text}" escapeXml="${hlaska.escapovat}" />
    8.57 +                </p>
    8.58 +            </c:forEach>
    8.59 +        </c:when>
    8.60 +
    8.61 +        <!-- Akce: Nápověda -->
    8.62 +        <c:when test="${param.akce == 'napoveda'}">
    8.63 +            <p>TODO: nápověda.</p>
    8.64 +        </c:when>
    8.65 +    </c:choose>
    8.66 +</jsp:root>
     9.1 --- a/java/sql-vyuka/web/hlavni.js	Sat May 30 22:54:44 2009 +0200
     9.2 +++ b/java/sql-vyuka/web/hlavni.js	Sun May 31 17:46:11 2009 +0200
     9.3 @@ -54,7 +54,7 @@
     9.4  function ajaxVykonatSQL() {
     9.5      if (ajax.readyState == 4 || ajax.readyState == 0) {
     9.6          zobraz(document.lokalizace.probihaSQL.value, stavovePole);
     9.7 -        ajax.open("POST", 'ajax?akce=vykonat&sql=' + encodeURIComponent(getSQL()), true);
     9.8 +        ajax.open("POST", 'ajax.jspx?akce=vykonat&sql=' + encodeURIComponent(getSQL()), true);
     9.9          ajax.onreadystatechange = function() {
    9.10              if (ajax.readyState == 4) {
    9.11                  zobraz(ajax.responseText, vystupniPole);
    9.12 @@ -70,7 +70,7 @@
    9.13  function ajaxZobrazitHistorii() {
    9.14      if (ajax.readyState == 4 || ajax.readyState == 0) {
    9.15          zobraz(document.lokalizace.probihaHistorie.value, stavovePole);
    9.16 -        ajax.open("POST", 'ajax?akce=historie', true);
    9.17 +        ajax.open("POST", 'ajax.jspx?akce=historie', true);
    9.18          ajax.onreadystatechange = function() {
    9.19              if (ajax.readyState == 4) {
    9.20                  zobraz(ajax.responseText, vystupniPole);