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