franta-hg@11: package cz.frantovo.sql.vyuka.ajax; franta-hg@11: franta-hg@11: import java.io.IOException; franta-hg@11: import java.io.PrintWriter; franta-hg@11: import javax.servlet.ServletException; franta-hg@11: import javax.servlet.http.HttpServlet; franta-hg@11: import javax.servlet.http.HttpServletRequest; franta-hg@11: import javax.servlet.http.HttpServletResponse; franta-hg@11: franta-hg@11: /** franta-hg@11: * Servlet pro vyřizování AJAXových požadavků. franta-hg@11: * @author fiki franta-hg@11: */ franta-hg@11: public class Servlet extends HttpServlet { franta-hg@11: franta-hg@11: private static final long serialVersionUID = 9102108273105288056L; franta-hg@11: franta-hg@11: private enum akce { franta-hg@11: franta-hg@11: /** Provede SQL dotaz. */ franta-hg@11: vykonat, franta-hg@11: /** Vypíše historii SQL příkazů daného uživatele. */ franta-hg@11: historie, franta-hg@11: /** Vypíše nějaké nepotřebné informace. */ franta-hg@11: test, franta-hg@11: /** Pokud je požadovaná akce nesmysl. */ franta-hg@11: chyba franta-hg@11: } franta-hg@11: franta-hg@11: /** franta-hg@11: * Processes requests for both HTTP GET and POST methods. franta-hg@11: * @param request servlet request franta-hg@11: * @param response servlet response franta-hg@11: * @throws ServletException if a servlet-specific error occurs franta-hg@11: * @throws IOException if an I/O error occurs franta-hg@11: */ franta-hg@11: protected void processRequest(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { franta-hg@12: franta-hg@11: /** Používáme pouze UTF-8 */ franta-hg@11: response.setContentType("text/html;charset=UTF-8"); franta-hg@11: request.setCharacterEncoding("UTF-8"); franta-hg@11: franta-hg@11: PrintWriter out = response.getWriter(); franta-hg@12: franta-hg@11: try { franta-hg@11: franta-hg@11: akce parametrAkce = akce.chyba; franta-hg@11: try { franta-hg@11: parametrAkce = akce.valueOf(request.getParameter("akce")); franta-hg@11: } catch (Exception e) { franta-hg@11: /** Chyba nebo podvržený AJAXový požadavek → zobrazíme chybovou hlášku */ franta-hg@11: } franta-hg@11: franta-hg@12: franta-hg@11: Ajax a = new Ajax(); franta-hg@12: String idSezeni = request.getRequestedSessionId(); franta-hg@11: franta-hg@11: franta-hg@11: switch (parametrAkce) { franta-hg@11: case vykonat: franta-hg@12: out.println(a.geSQLVysledek(request.getParameter("sql"), idSezeni)); franta-hg@11: break; franta-hg@11: case historie: franta-hg@12: out.println(a.getHistorie(idSezeni)); franta-hg@11: break; franta-hg@11: case test: franta-hg@11: out.println("

AJAX jede!

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

chyba

"); franta-hg@11: break; franta-hg@11: } franta-hg@11: } finally { franta-hg@11: out.close(); franta-hg@11: } franta-hg@11: } franta-hg@11: franta-hg@11: // franta-hg@11: /** franta-hg@11: * Handles the HTTP GET method. franta-hg@11: * @param request servlet request franta-hg@11: * @param response servlet response franta-hg@11: * @throws ServletException if a servlet-specific error occurs franta-hg@11: * @throws IOException if an I/O error occurs franta-hg@11: */ franta-hg@11: @Override franta-hg@11: protected void doGet(HttpServletRequest request, HttpServletResponse response) franta-hg@11: throws ServletException, IOException { franta-hg@11: processRequest(request, response); franta-hg@11: } franta-hg@11: franta-hg@11: /** franta-hg@11: * Handles the HTTP POST method. franta-hg@11: * @param request servlet request franta-hg@11: * @param response servlet response franta-hg@11: * @throws ServletException if a servlet-specific error occurs franta-hg@11: * @throws IOException if an I/O error occurs franta-hg@11: */ franta-hg@11: @Override franta-hg@11: protected void doPost(HttpServletRequest request, HttpServletResponse response) franta-hg@11: throws ServletException, IOException { franta-hg@11: processRequest(request, response); franta-hg@11: } franta-hg@11: franta-hg@11: /** franta-hg@11: * Returns a short description of the servlet. franta-hg@11: * @return a String containing servlet description franta-hg@11: */ franta-hg@11: @Override franta-hg@11: public String getServletInfo() { franta-hg@11: return "Servlet pro zpracování AJAXových požadavků."; franta-hg@11: }// franta-hg@11: }