# HG changeset patch # User František Kučera # Date 1243545139 -7200 # Node ID 267cce6b9d778442fffd39bdde8696f195a512c3 # Parent 5d6592e753c0705980cf574a8e24b18e349138e4 Servlet pro zpracování AJAXových požadavků. diff -r 5d6592e753c0 -r 267cce6b9d77 java/sql-vyuka/src/java/cz/frantovo/sql/vyuka/ajax/Ajax.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/java/sql-vyuka/src/java/cz/frantovo/sql/vyuka/ajax/Ajax.java Thu May 28 23:12:19 2009 +0200 @@ -0,0 +1,23 @@ +package cz.frantovo.sql.vyuka.ajax; + +/** + * 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(String idSezeni) { + return "

historie (id=" + idSezeni + ")

"; + } + + /** + * Vykoná zadaný SQL příkaz v databázi. + * @return Výsledek dotazu – tabulka, hláška nebo chyba. + */ + public String geSQLVysledek(String sql) { + return "

SQL dotaz (čeština): " + sql + "

"; + } +} diff -r 5d6592e753c0 -r 267cce6b9d77 java/sql-vyuka/src/java/cz/frantovo/sql/vyuka/ajax/Servlet.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/java/sql-vyuka/src/java/cz/frantovo/sql/vyuka/ajax/Servlet.java Thu May 28 23:12:19 2009 +0200 @@ -0,0 +1,120 @@ +package cz.frantovo.sql.vyuka.ajax; + +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, + /** 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(); + + + switch (parametrAkce) { + case vykonat: + out.println(a.geSQLVysledek(request.getParameter("sql"))); + break; + case historie: + out.println(a.geSQLVysledek(request.getRequestedSessionId())); + 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 5d6592e753c0 -r 267cce6b9d77 java/sql-vyuka/web/WEB-INF/casti/aplikace.jspx --- a/java/sql-vyuka/web/WEB-INF/casti/aplikace.jspx Thu May 28 21:19:06 2009 +0200 +++ b/java/sql-vyuka/web/WEB-INF/casti/aplikace.jspx Thu May 28 23:12:19 2009 +0200 @@ -21,9 +21,9 @@

-
+
- +