Por que ao inves de usar o doDelete() só vejo as pessoas usando isso aqui
<td><a href="servlet?action=delete&id=<c:out value="${objeto.id}"/>"><img src="img/botaoDeletar.png" /></a></td>
Por que ao inves de usar o doDelete() só vejo as pessoas usando isso aqui
<td><a href="servlet?action=delete&id=<c:out value="${objeto.id}"/>"><img src="img/botaoDeletar.png" /></a></td>
Cada um faz o que quer, portanto que funcione pro usuário.
por favor, uma dúvida, não relacionada… em qual momento que o servlet context é destruido no ciclo de vida de servlets?
Boa tarde Douglas,
Exemplos de servlets de Framework:
1 Servlet JSF - Varios Managed Bean para as funcionalidades
<servlet>
<servlet-name>Faces Servlet</servlet-name>
<servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Faces Servlet</servlet-name>
<url-pattern>*.xhtml</url-pattern>
</servlet-mapping>
1 Servlet Struts - Varias actions para as funcionalidades
<servlet>
<servlet-name>action</servlet-name>
<servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>action</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
Quando estamos estudando é apresentado bastante exemplos utilizando um servlet para representar uma funcionalidade, seguindo essa logica dos exemplos, teriamos N servlets na aplicação, mas isso não é o ideal.
Segue um exemplo de um curso que fiz que apresenta somente 1 servlet como controlador e outras classes que representa as tarefas (ações):
@WebServlet(urlPatterns = "/executa")
public class Controller extends HttpServlet {
//...
@Override
protected void service(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String tarefa = request.getParameter("tarefa");
if (tarefa == null)
throw new IllegalArgumentException("A tarefa é necessaria!");
try {
String nomeDaClasse = "br.com.alura.gerenciador.web." + tarefa;
Class<?> tipo = Class.forName(nomeDaClasse);
Tarefa instancia = (Tarefa) tipo.newInstance();
String resultado = instancia.executa(request, response);
RequestDispatcher dispatcher = request.getRequestDispatcher(resultado);
dispatcher.forward(request, response);
} catch (Exception e) {
throw new ServletException(e);
}
}
}
public interface Tarefa {
public String executa(HttpServletRequest request, HttpServletResponse response) throws ServletException;
}
public class NovaEmpresa implements Tarefa {
@Override
public String executa(HttpServletRequest request,
HttpServletResponse response) {
String nome = request.getParameter("nome");
Empresa empresa = new Empresa(nome);
new EmpresaDAO().adiciona(empresa);
request.setAttribute("empresa", empresa);
return "/WEB-INF/paginas/novaEmpresa.jsp";
}
}
<form action="executa" method="post">
<input type="hidden" name="tarefa" value="NovaEmpresa">
<table>
<tr>
<td>Nome:</td>
<td><input type="text" name="nome"></td>
</tr>
<tr>
<td></td>
<td><input type="submit" value="Enviar"></td>
</tr>
</table>
</form>
Não sei se deu pra ter uma ideia ±
Espero que te ajude
Aqui tem o projeto que utilizei como exemplo: