franta-hg@11: package cz.frantovo.sql.vyuka.ajax;
franta-hg@11:
franta-hg@13: import cz.frantovo.sql.vyuka.dto.Uzivatel;
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@14: /** Nápověda – průvodce */
franta-hg@14: napoveda,
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@11:
franta-hg@24: Uzivatel uzivatel = new Uzivatel(request.getRequestedSessionId(), request.getRemoteAddr());
franta-hg@11:
franta-hg@11: switch (parametrAkce) {
franta-hg@11: case vykonat:
franta-hg@13: out.println(a.geSQLVysledek(request.getParameter("sql"), uzivatel));
franta-hg@11: break;
franta-hg@11: case historie:
franta-hg@13: out.println(a.getHistorie(uzivatel));
franta-hg@11: break;
franta-hg@14: case napoveda:
franta-hg@14: out.println("
Nápověda bude…
"); franta-hg@14: break; franta-hg@11: case test: franta-hg@11: out.println("AJAX jede!
"); 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: //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: }//