Solucionado (ver solução)
Solucionado
(ver solução)
5
respostas

Erro 405 quando envio o formulário de edição

Eu segui todos os passos do professor, porém quando vou enviar o formulario do metodo uptade ele da o erro 405, tem haver com a versão do tomcat?

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

5 respostas

Olá!

Não tem a ver com a versão do tomcat. Talvez o processamento da requisição esteja no GET e não no post, por isso deu 405. Dá uma conferida no tipo da requisição e onde está a implementação de processamento.

Isso pode acontecer.

pior que não esta com GET, ou eu não estou encontrando ;-;

Segue abaixo meus arquivos, eu udei outro nome ao inves de alteraEmpresa eu usei AtualizaEmpresa

  • AtualizaEmpresaServlet
package br.com.gerenciador.servlet;

import java.io.IOException;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

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("/atualizaEmpresa")
public class AtualizaEmpresaServlet extends HttpServlet {
    private static final long serialVersionUID = 1L;

    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        System.out.println("Alterando dados da empresa: ");

        // trabalhando com parâmetros
        String nomeEmpresa = request.getParameter("nome");
        String paramDataEmpresa = request.getParameter("data");
        String paramIdEmpresa = request.getParameter("id");

        Integer idEmpresa = Integer.valueOf(paramIdEmpresa);
        Date dataAbertura = null;

        // formatação da data para o tipo Date e no formato dd/MM/yyyy
        try { 
            SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
            dataAbertura = sdf.parse(paramDataEmpresa);
        } catch (ParseException e) {
            throw new ServletException(e);
        }

        System.out.println(idEmpresa);

        Banco banco = new Banco();
        Empresa empresa = banco.buscaEmpresa(idEmpresa);
        empresa.setNome(nomeEmpresa);
        empresa.setDataAbertura(dataAbertura);

    }

}

  • formAtualizaEmpresa
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>

<c:url value="/atualizaEmpresa" var="hyperlink"/>

<!DOCTYPE html>
<html>
<head>
<meta charset="ISO-8859-1">
<title>Atualizando empresa</title>
</head>
<body>
    <form action="${ hyperlink }" method="post">

        Nome: <input type="text" name="nome" value="${empresa.nome }"/>
        Data Abertura: <input type="text" name="data" value="<fmt:formatDate value="${empresa.dataAbertura }" pattern="dd/MM/yyyy"/>" />

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

  • ListaEmpresas.Java
package br.com.gerenciador.servlet;

import java.io.IOException;
import java.util.List;

import javax.servlet.RequestDispatcher;
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("/listaEmpresas")
public class ListaEmpresas extends HttpServlet {
    private static final long serialVersionUID = 1L;


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

        Banco banco = new Banco();
        List<Empresa> lista = banco.getEmpresas();
        request.setAttribute("empresas", lista);

        RequestDispatcher rd = request.getRequestDispatcher("/listaEmpresas.jsp");
        rd.forward(request, response);

    }

}

Olha, Eu tiraria a barra da url ali. Deixaria só <c:url value="atualizaEmpresa" var="hyperlink"/> Que daí aproveita o contexto.

Outra tentativa é colocar o contexto toda pra ver se não tem outro problema:

/NomeAplicacao/atualizaEmpresa

Normalmente eu colocava só: SrvAtualizaEmpresa no seu caso só atualizaEmpresa.

solução!

Bom dia Bruna,

Na classe "AtualizaEmpresaServlet", falta o redirecionamento para listar as empresas após a alteração.

System.out.println(id);

Banco banco = new Banco(); Empresa empresa = banco.buscaEmpresaPelaId(id); empresa.setNome(nomeEmpresa); empresa.setDataAbertura(dataAbertura);

response.sendRedirect("listaEmpresas");

Espero ter ajudado

Obrigada Vinicius De Castro Gorgonho e Sandro Marcelo Arpi

Ajudou sim, o problema esta na URL mesmo e a importação da biblioteca do core, não reparei neste detalhe rsrs

Brigadão :3