java/sql-vyuka/src/java/cz/frantovo/sql/vyuka/ajax/Servlet.java
author František Kučera <franta-hg@frantovo.cz>
Fri May 29 00:13:11 2009 +0200 (2009-05-29)
changeset 12 1b10a6565e8c
parent 11 267cce6b9d77
child 13 96e711f3ef48
permissions -rw-r--r--
Propojení javascriptu a servletu.
     1 package cz.frantovo.sql.vyuka.ajax;
     2 
     3 import java.io.IOException;
     4 import java.io.PrintWriter;
     5 import javax.servlet.ServletException;
     6 import javax.servlet.http.HttpServlet;
     7 import javax.servlet.http.HttpServletRequest;
     8 import javax.servlet.http.HttpServletResponse;
     9 
    10 /**
    11  * Servlet pro vyřizování AJAXových požadavků.
    12  * @author fiki
    13  */
    14 public class Servlet extends HttpServlet {
    15 
    16     private static final long serialVersionUID = 9102108273105288056L;
    17 
    18     private enum akce {
    19 
    20         /** Provede SQL dotaz. */
    21         vykonat,
    22         /** Vypíše historii SQL příkazů daného uživatele. */
    23         historie,
    24         /** Vypíše nějaké nepotřebné informace. */
    25         test,
    26         /** Pokud je požadovaná akce nesmysl. */
    27         chyba
    28     }
    29 
    30     /** 
    31      * Processes requests for both HTTP <code>GET</code> and <code>POST</code> methods.
    32      * @param request servlet request
    33      * @param response servlet response
    34      * @throws ServletException if a servlet-specific error occurs
    35      * @throws IOException if an I/O error occurs
    36      */
    37     protected void processRequest(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    38 
    39         /** Používáme pouze UTF-8 */
    40         response.setContentType("text/html;charset=UTF-8");
    41         request.setCharacterEncoding("UTF-8");
    42 
    43         PrintWriter out = response.getWriter();
    44 
    45         try {
    46 
    47             akce parametrAkce = akce.chyba;
    48             try {
    49                 parametrAkce = akce.valueOf(request.getParameter("akce"));
    50             } catch (Exception e) {
    51                 /** Chyba nebo podvržený AJAXový požadavek → zobrazíme chybovou hlášku */
    52             }
    53 
    54 
    55             Ajax a = new Ajax();
    56             String idSezeni = request.getRequestedSessionId();
    57 
    58 
    59             switch (parametrAkce) {
    60                 case vykonat:
    61                     out.println(a.geSQLVysledek(request.getParameter("sql"), idSezeni));
    62                     break;
    63                 case historie:
    64                     out.println(a.getHistorie(idSezeni));
    65                     break;
    66                 case test:
    67                     out.println("<p>AJAX jede!</p>");
    68                     out.println("<ol>");
    69                     out.println("<li>Metoda: " + request.getMethod() + "</li>");
    70                     out.println("<li>Host: " + request.getRemoteHost() + "</li>");
    71                     out.println("<li>Adresa: " + request.getRemoteAddr() + "</li>");
    72                     out.println("<li>Akce: " + request.getParameter("akce") + "</li>");
    73                     out.println("<li>SQL: " + request.getParameter("sql") + "</li>");
    74                     out.println("<li>Sezení: " + request.getRequestedSessionId() + "</li>");
    75                     out.println("<li>URL: " + request.getRequestURL().toString() + "</li>");
    76                     out.println("</ol>");
    77                     break;
    78                 case chyba:
    79                     out.println("<p>chyba</p>");
    80                     break;
    81             }
    82         } finally {
    83             out.close();
    84         }
    85     }
    86 
    87     // <editor-fold defaultstate="collapsed" desc="HttpServlet methods. Click on the + sign on the left to edit the code.">
    88     /** 
    89      * Handles the HTTP <code>GET</code> method.
    90      * @param request servlet request
    91      * @param response servlet response
    92      * @throws ServletException if a servlet-specific error occurs
    93      * @throws IOException if an I/O error occurs
    94      */
    95     @Override
    96     protected void doGet(HttpServletRequest request, HttpServletResponse response)
    97             throws ServletException, IOException {
    98         processRequest(request, response);
    99     }
   100 
   101     /** 
   102      * Handles the HTTP <code>POST</code> method.
   103      * @param request servlet request
   104      * @param response servlet response
   105      * @throws ServletException if a servlet-specific error occurs
   106      * @throws IOException if an I/O error occurs
   107      */
   108     @Override
   109     protected void doPost(HttpServletRequest request, HttpServletResponse response)
   110             throws ServletException, IOException {
   111         processRequest(request, response);
   112     }
   113 
   114     /** 
   115      * Returns a short description of the servlet.
   116      * @return a String containing servlet description
   117      */
   118     @Override
   119     public String getServletInfo() {
   120         return "Servlet pro zpracování AJAXových požadavků.";
   121     }// </editor-fold>
   122 }