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.