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?
Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!
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?
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
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);
}
}
<%@ 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>
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.
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