Přechod ze servletu na JSP – přidání JSPX.
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);