java/sql-vyuka/src/java/cz/frantovo/sql/vyuka/ajax/Servlet.java
author František Kučera <franta-hg@frantovo.cz>
Sun May 31 17:46:11 2009 +0200 (2009-05-31)
changeset 24 dceaaefb1946
parent 14 d08769933940
permissions -rw-r--r--
Přechod ze servletu na JSP – přidání JSPX.
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@14
    25
        /** Nápověda – průvodce */
franta-hg@14
    26
        napoveda,
franta-hg@11
    27
        /** Vypíše nějaké nepotřebné informace. */
franta-hg@11
    28
        test,
franta-hg@11
    29
        /** Pokud je požadovaná akce nesmysl. */
franta-hg@11
    30
        chyba
franta-hg@11
    31
    }
franta-hg@11
    32
franta-hg@11
    33
    /** 
franta-hg@11
    34
     * Processes requests for both HTTP <code>GET</code> and <code>POST</code> methods.
franta-hg@11
    35
     * @param request servlet request
franta-hg@11
    36
     * @param response servlet response
franta-hg@11
    37
     * @throws ServletException if a servlet-specific error occurs
franta-hg@11
    38
     * @throws IOException if an I/O error occurs
franta-hg@11
    39
     */
franta-hg@11
    40
    protected void processRequest(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
franta-hg@12
    41
franta-hg@11
    42
        /** Používáme pouze UTF-8 */
franta-hg@11
    43
        response.setContentType("text/html;charset=UTF-8");
franta-hg@11
    44
        request.setCharacterEncoding("UTF-8");
franta-hg@11
    45
franta-hg@11
    46
        PrintWriter out = response.getWriter();
franta-hg@12
    47
franta-hg@11
    48
        try {
franta-hg@11
    49
franta-hg@11
    50
            akce parametrAkce = akce.chyba;
franta-hg@11
    51
            try {
franta-hg@11
    52
                parametrAkce = akce.valueOf(request.getParameter("akce"));
franta-hg@11
    53
            } catch (Exception e) {
franta-hg@11
    54
                /** Chyba nebo podvržený AJAXový požadavek → zobrazíme chybovou hlášku */
franta-hg@11
    55
            }
franta-hg@11
    56
franta-hg@12
    57
franta-hg@11
    58
            Ajax a = new Ajax();
franta-hg@11
    59
franta-hg@24
    60
            Uzivatel uzivatel = new Uzivatel(request.getRequestedSessionId(), request.getRemoteAddr());
franta-hg@11
    61
franta-hg@11
    62
            switch (parametrAkce) {
franta-hg@11
    63
                case vykonat:
franta-hg@13
    64
                    out.println(a.geSQLVysledek(request.getParameter("sql"), uzivatel));
franta-hg@11
    65
                    break;
franta-hg@11
    66
                case historie:
franta-hg@13
    67
                    out.println(a.getHistorie(uzivatel));
franta-hg@11
    68
                    break;
franta-hg@14
    69
                case napoveda:
franta-hg@14
    70
                    out.println("<p>Nápověda bude…</p>");
franta-hg@14
    71
                    break;
franta-hg@11
    72
                case test:
franta-hg@11
    73
                    out.println("<p>AJAX jede!</p>");
franta-hg@11
    74
                    out.println("<ol>");
franta-hg@11
    75
                    out.println("<li>Metoda: " + request.getMethod() + "</li>");
franta-hg@11
    76
                    out.println("<li>Host: " + request.getRemoteHost() + "</li>");
franta-hg@11
    77
                    out.println("<li>Adresa: " + request.getRemoteAddr() + "</li>");
franta-hg@11
    78
                    out.println("<li>Akce: " + request.getParameter("akce") + "</li>");
franta-hg@11
    79
                    out.println("<li>SQL: " + request.getParameter("sql") + "</li>");
franta-hg@11
    80
                    out.println("<li>Sezení: " + request.getRequestedSessionId() + "</li>");
franta-hg@11
    81
                    out.println("<li>URL: " + request.getRequestURL().toString() + "</li>");
franta-hg@11
    82
                    out.println("</ol>");
franta-hg@11
    83
                    break;
franta-hg@11
    84
                case chyba:
franta-hg@11
    85
                    out.println("<p>chyba</p>");
franta-hg@11
    86
                    break;
franta-hg@11
    87
            }
franta-hg@11
    88
        } finally {
franta-hg@11
    89
            out.close();
franta-hg@11
    90
        }
franta-hg@11
    91
    }
franta-hg@11
    92
franta-hg@11
    93
    // <editor-fold defaultstate="collapsed" desc="HttpServlet methods. Click on the + sign on the left to edit the code.">
franta-hg@11
    94
    /** 
franta-hg@11
    95
     * Handles the HTTP <code>GET</code> method.
franta-hg@11
    96
     * @param request servlet request
franta-hg@11
    97
     * @param response servlet response
franta-hg@11
    98
     * @throws ServletException if a servlet-specific error occurs
franta-hg@11
    99
     * @throws IOException if an I/O error occurs
franta-hg@11
   100
     */
franta-hg@11
   101
    @Override
franta-hg@11
   102
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
franta-hg@11
   103
            throws ServletException, IOException {
franta-hg@11
   104
        processRequest(request, response);
franta-hg@11
   105
    }
franta-hg@11
   106
franta-hg@11
   107
    /** 
franta-hg@11
   108
     * Handles the HTTP <code>POST</code> method.
franta-hg@11
   109
     * @param request servlet request
franta-hg@11
   110
     * @param response servlet response
franta-hg@11
   111
     * @throws ServletException if a servlet-specific error occurs
franta-hg@11
   112
     * @throws IOException if an I/O error occurs
franta-hg@11
   113
     */
franta-hg@11
   114
    @Override
franta-hg@11
   115
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
franta-hg@11
   116
            throws ServletException, IOException {
franta-hg@11
   117
        processRequest(request, response);
franta-hg@11
   118
    }
franta-hg@11
   119
franta-hg@11
   120
    /** 
franta-hg@11
   121
     * Returns a short description of the servlet.
franta-hg@11
   122
     * @return a String containing servlet description
franta-hg@11
   123
     */
franta-hg@11
   124
    @Override
franta-hg@11
   125
    public String getServletInfo() {
franta-hg@11
   126
        return "Servlet pro zpracování AJAXových požadavků.";
franta-hg@11
   127
    }// </editor-fold>
franta-hg@11
   128
}