3
respostas

Erro - 405

Estou tentando fazer o método para deletar, porém ocorre o erro acima, tentei usar até o método service, porém sem sucesso, segue fonte:

listaEmpresa.jsp

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<%@ page import="java.util.List, br.com.alura.gerenciador.servlet.Empresa"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>

<!DOCTYPE html>
<html>
<head>
<meta charset="ISO-8859-1">
<title>Java Standard Taglib</title>
</head>
<body>

    <c:if test="${not empty empresa}">
        Empresa ${ empresa } cadastrada com sucesso!
    </c:if>

    Lista de empresas: <br />

    <ul>
        <c:forEach items="${empresas}" var="empresa">

            <li>
                ${empresa.id } - ${empresa.nome } - <fmt:formatDate value="${empresa.dataAbertura }" pattern="dd/MM/yyyy"/> - 
                <a href='<c:url value="/apagaEmpresa" />'>Editar </a> -
                <a href='<c:url value="/apagaEmpresa?id=${empresa.id }" />'>Deletar </a> 
            </li>
        </c:forEach>
    </ul>

</body>
</html>

Classe para deletar a empresa:

package br.com.alura.gerenciador.servlet;

import java.io.IOException;
import java.net.http.HttpRequest;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

@WebServlet("/apagaEmpresa")
public class ApagaEmpresaServlet extends HttpServlet{

    protected void service (HttpServletRequest request, HttpServletResponse response) 
            throws ServletException, IOException {
        System.out.println("Deletando empresa");

        Integer idEmpresa = Integer.parseInt(request.getParameter("id"));

        Banco banco = new Banco();

        Empresa empresa = new Empresa();
        empresa.setId(idEmpresa);

        banco.deleta(empresa);

        response.sendRedirect("listaEmpresas");

    }


}
3 respostas

Oie Marcos, tudo bem contigo?

Consegui observar alguns errinhos nessa classe "ApagaEmpresaServlet", segue a explicação com os comentários em cima do seu código:

@WebServlet("/apagaEmpresa")
public class ApagaEmpresaServlet extends HttpServlet{

    protected void service (HttpServletRequest request, HttpServletResponse response)  // aqui seria usado o método "doGet"
            throws ServletException, IOException {
        System.out.println("Deletando empresa");

        Integer idEmpresa = Integer.parseInt(request.getParameter("id"));

        Banco banco = new Banco();

        Empresa empresa = new Empresa(); // qual seria o motivo da criação de um novo objeto "Empresa"? Esses objetos são criados a partir do forms do arquivo "formNovaEmpresa.jsp" em conjunto com a classe "NovaEmpresaServlet" por isso não consegui entender a criação do objeto aqui

        empresa.setId(idEmpresa); // a mesma coisa de cima

        banco.deleta(empresa); 

        response.sendRedirect("listaEmpresas");

    }


}

Corrigindo seu código ficaria assim:

@WebServlet("/apagaEmpresa")
public class ApagaEmpresaServlet extends HttpServlet{

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

        System.out.println("Deletando empresa");

        Integer idEmpresa = Integer.parseInt(request.getParameter("id"));

        Banco banco = new Banco();
        banco.deleta(empresa);

        response.sendRedirect("listaEmpresas");

    }
}

Veja se usando o código acima funciona!

Caso não, vale a pena dar uma olhada na resposta que dei nesse tópico aqui, onde falo sobre dar "clean" no cache tanto do tomcat como do eclipse.

Se nenhuma dessas soluções funcionar é só mandar mensagem por aqui que irei ver outras formas!

Bons estudos.

Agora deu erro nos links do WebServlet, eu indiquei uma anotação para o apagarEmpresa acessar o link, podém sem sucesso, agora (depois do clean) ocorre erro 404, vou baixar a última versão do instrutor e refazer

Outra coisa importante, veja se você esta usando as mesmas configurações que o instrutor, sendo o Java 8, 9 ou 10, e o Tomcat na versão 9.

Fico no aguardo para saber se você teve sucesso refazendo todo o processo.