Olá, Nico.
Esse servlet abaixo seria considerado uma gambiara no mundo Java ???
package br.com.alura.servlets; import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import br.com.alura.models.empresas.Database; import br.com.alura.models.empresas.Empresa; /** * Servlet implementation class Empresa */ @WebServlet({ "/empresa", "/empresa/form", "/empresa/remove" }) public class EmpresaServlet extends HttpServlet { private static final long serialVersionUID = 1L; protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //ServletContext context = request.getServletContext(); //System.out.println(context.getContextPath()); //System.out.println(context.getRealPath(context.getContextPath())); // /alura/empresa/form System.out.println(request.getRequestURI()); // /alura System.out.println(request.getContextPath()); ///empresa/form System.out.println(request.getRequestURI().substring(request.getContextPath().length())); switch(request.getRequestURI().substring(request.getContextPath().length())){ case "/empresa/form": this.form(request, response); break; case "/empresa/remove": this.remove(request, response); break; default: this.index(request, response); } } /** * * crud: create, read, update */ protected void form(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { Empresa empresa; // Se possui id por GET é um READ ou por POST é um UPDATE if(request.getParameterMap().containsKey("id")){ empresa = Database.findOrNew((String)request.getParameter("id")); } // Senão possui id por GET é um NEW ou por POST é um CREATE else { empresa = Empresa.newInstance(); } // create, update if(request.getMethod().equals("POST")){ // Popula os dados na model empresa.setName(request.getParameter("name")); empresa.setCreateAt(br.com.alura.utils.Date.encode(request.getParameter("createAt"))); // Abre a transação Database db = new Database(); db.beginTransation(); try { db.save(empresa); db.commit(); //request.setAttribute("message", String.format("Empresa %s salva com sucesso", request.getParameter("name"))); // todo: mudar para sessão, quando for ensinada :( response.sendRedirect("/alura/empresa"); return;// interrope o método para não gererar erro com o forward } catch(Exception e) { db.rollBack(); request.setAttribute("message", e.getMessage()); request.setAttribute("empresa", empresa); } } // GET - new, read else { request.setAttribute("empresa", empresa); } request.getRequestDispatcher("/empresa/form.jsp").forward(request, response); } /** * * crud: remove */ protected void remove(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { if(!request.getParameterMap().containsKey("id")){ throw new ServletException("Nenhuma id foi especificada"); } Integer id = Integer.valueOf(request.getParameter("id")); try { Database.newInstance().remove(id); request.setAttribute("message", String.format("Empresa %s foi removida com sucesso", id)); } catch(Exception e) { request.setAttribute("message", "Falhou"); } response.sendRedirect("/alura/empresa"); } /** * * crud: read */ protected void index(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { Database db = new Database(); request.setAttribute("rows", db.getAll()); request.getRequestDispatcher("/empresa/list.jsp").forward(request, response); } }
At Michael.