3
respostas

HTTP method POST is not supported by this URL ou GET

Pessoal estou com problemas com o doPost e doGet, pois quando coloco service como note do método, o formulário consegue cadastrar empresa porém quando altero para doPost ele da erro do titulo.

formNovaEmpresa.html

<meta charset="ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
    <form action="/gerenciador-marin/novaEmpresa" method="POST">

    Nome: <input type="text" name="nome"/>

    <input type="submit"/>
    </form>
</body>
</html>

Minha classe de novaEmpresaServlet.java:

@WebServlet("/novaEmpresa")
public class NovaEmpresaServlet extends HttpServlet {

    public void doPost(ServletRequest req, ServletResponse res) 
            throws ServletException, IOException {

        System.out.println("novaEmpresaServlet foi chamado.");

        String nomeDaEmpresa = req.getParameter("nome");
        Empresa empresa = new Empresa();
        empresa.setNome(nomeDaEmpresa);

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

        PrintWriter out = res.getWriter();
        out.println("<html><body>Empresa "+nomeDaEmpresa+" Cadastrada.</body></html>");
    }
}

e o pior de tudo que quando eu coloco service e funciona, para ter certeza eu vou no google chrome e checo o network a chamada ta como POST e mesmo assim da o erro de method, para ter certeza utilizei do Talend API Tester e coloquei como GET para tentar acessar minha tela de acessar lista de empresas e tomo o mesmo erro.

ListaEmpresasServlet:

@WebServlet("/listaEmpresas")
public class ListaEmpresasServlet extends HttpServlet{

    private static final long serialVersionUID = 1L;

    public void doGet(ServletRequest request, ServletResponse response) throws ServletException, IOException {

        Banco banco = new Banco();
        List<Empresa> lista = banco.getEmpresas();

        PrintWriter out = response.getWriter();
        out.println("<html><body>");
        out.println("<ul>");
        lista.forEach(empresasNome -> out.println("<li>"+empresasNome+"</li>"));
        out.println("</ul>");
        out.println("</body></html");

    }

}
3 respostas

o seu projeto chama gerenciador-marin e no seu web.xml está com o display name abaixo?

gerenciador-marin

Parece que a URL que o form está submetendo não está compatível no doPost do NovaEmpresaServlet

Os parâmetros recebidos deveriam ser HttpServletRequest / HttpServletResponse

@Otávio estava certo sim, obrigado pela dica

@Francisco, funcionou era isso mesmo por incrivel que pareça não me toquei nos parametros acabei pegando um service com parametros errado ai quando troquei de nome não rolou, hahaha obrigado gente!