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