14
respostas

Erro 404!

Eu ligo o servidor e na hora que eu entro na url "http://localhost:8080/casadocodigo/produtos" da o erro 404. A descrição do erro é "Description The origin server did not find a current representation for the target resource or is not willing to disclose that one exists." como se o servidor não fosse encontrado, Alguém poderia me ajudar??

14 respostas

Oi Rodrigo, tudo bem?

Posta aqui o código do seu ProdutosController e form.jsp, por favor.

package br.com.casadocodigo.loja.controllers;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;

import br.com.casadocodigo.loja.dao.ProdutoDAO;
import br.com.casadocodigo.loja.models.Produto;
import br.com.casadocodigo.loja.models.TipoPreco;

@Controller
public class ProdutosController {


    @Autowired
    private ProdutoDAO dao;

    @RequestMapping("/produtos/form")
    public ModelAndView form() {
        ModelAndView modelAndView = new ModelAndView("produtos/form");
        modelAndView.addObject("tipos", TipoPreco.values());

        return modelAndView;
    }

    @RequestMapping("/produtos")
    public String gravar(Produto produto){
        System.out.println(produto);
        dao.gravar(produto);
        return "/produtos/ok";
    }
}
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix ="c" %>    
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Livros de Java, Android, iPhone, Ruby, PHP e muito mais -
    Casa do Código</title>
</head>
<body>
    <h1>Casa do Código</h1>
    <form action="/casadocodigo/produtos" method="post">
        <div>
            <label>Título</label> <input type="text" name="titulo" />
        </div>
        <div>
            <label>Descrição</label>
            <textarea rows="10" cols="20" name="descricao"></textarea>
        </div>
        <div>
            <label>Páginas</label> <input type="text" name="paginas" />
        </div>

            <c:forEach items= "${tipos }" var = "tipoPreco" varStatus= "status"> </c:forEach> 

        <label>${tipoPreco }</label> 
        <input type="text" name="precos[${status.index }].valor" />
        <input type= "hidden" name= "precos[${status.index }].tipo" value= "${tipoPreco }">

        <button type="submit">Cadastrar</button>
    </form>
</body>
</html>

Posta também o AppWebConfiguration. Você criou o "WEB-INF/views/produtos/form/ok.jsp" ?

Sim criei "WEB-INF/views/produtos/form/ok.jsp", será que tem algo a ver com a versão do TomCat? Eu uso a versão 9 dele e também se teria algo a ver com o terminal.

segue o meu código do appWebConfiguration.

package br.com.casadocodigo.loja.conf;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.web.servlet.config.annotation.EnableWebMvc;
import org.springframework.web.servlet.view.InternalResourceViewResolver;

import br.com.casadocodigo.loja.controllers.HomeController;
import br.com.casadocodigo.loja.dao.ProdutoDAO;

@EnableWebMvc
@ComponentScan(basePackageClasses= {HomeController.class, ProdutoDAO.class})
public class AppWebConfiguration {

    @Bean
    public InternalResourceViewResolver internalResourceViewResolver() {
        InternalResourceViewResolver resolver = new InternalResourceViewResolver();
        resolver.setPrefix("/WEB-INF/views/");
        resolver.setSuffix( ".jsp");
        return resolver;
    }

}

Será que é esse seu foreach??

            <c:forEach items= "${tipos }" var = "tipoPreco" varStatus= "status"> </c:forEach> 

Você abriu e fechou o forEach sem nada dentro e depois chamou a div que teoricamente utilizaria os dados do forEach. Tente algo parecido com:

<c:forEach items= "${tipos }" var = "tipoPreco" varStatus= "status"> 
    <label>${tipoPreco }</label> 
        <input type="text" name="precos[${status.index }].valor" />
        <input type= "hidden" name= "precos[${status.index }].tipo" value= "${tipoPreco }">
</c:forEach> 

Outra coisa que ia te perguntar é por qual motivo você está fazendo o acesso direto ao endereço "/produtos". Teoricamente essa página só serviria para salvar o produto.

Para cadastrar seria em "/produtos/form" e para visualizar a mensagem de sucesso seria "/produtos/ok"

Não é o for each, o que acontece é que parece que não encontra o servidor. Quando eu entro na url aparece essa mensagem na descrição do erro " The origin server did not find a current representation for the target resource or is not willing to disclose that one exists."

Vish, nao tenho certeza, mas pode ser algo com o Tomcat sim. Pode postar o ServletSpringMVC?

package br.com.casadocodigo.loja.conf;

import org.springframework.web.servlet.support.AbstractAnnotationConfigDispatcherServletInitializer;

public class ServletSpringMVC extends AbstractAnnotationConfigDispatcherServletInitializer{

    @Override
    protected Class<?>[] getRootConfigClasses() {
        return null;
    }

    @Override
    protected Class<?>[] getServletConfigClasses() {
        return new Class[] {AppWebConfiguration.class, JPAConfiguration.class};
    }

    @Override
    protected String[] getServletMappings() {
        return new String[] {"/"};
    }

}

Rapaz, copiei todos os arquivos que você postou e aqui funcionou. Tenho duas hipóteses:

  • Ou o problema está em um dos arquivos que você nao colocou aqui ainda (ex ProdutoDao, entity Produto, etc.)
  • Ou o problema vai ser no servidor mesmo. O problema só acontece nessa página?? se vc tentar acessar o produtos/form funciona normal??

Não o problema acontece em todas as páginas que eu tento entrar e não acontece. Nem na produtos/form não entra. Se o problema for o servidor tem como resolver??

Se for o servidor, o jeito mais garantido de resolver é vc seguir a configuração que ele faz no curso pra deixar igual.

Aconselho também tentar baixar um dos projetos que o instrutor disponibiliza entre os capítulos e tentar rodar. Deveria funcionar.

O meu servidor tá diferente também, o que mudou aqui foi o seguinte: ao invés dos arquivos de view estarem em 'src/main/webapp/WEB-INF' eles ficam em 'WebContent/WEB-INF'.

Posta aqui se conseguir resolver - só por curiosidade mesmo.

"Aconselho também tentar baixar um dos projetos que o instrutor disponibiliza entre os capítulos e tentar rodar. Deveria funcionar." Ja tentei com o que ele disponibiliza e não deu certo também. Dá o mesmo erro, não sei se tem a ver com terminal de comando, ou o forge que não deu certo.

Pois é, mas se fizer o download do projeto dele pronto era pra funcionar, pq aí nao tem necessidade de rodar o forge ou alterar alguma configuração. Rapaz, tirando o que sugeri, nao sei o que pode ser. Se quiser subir seu projeto eu posso tentar fazer o download e ver se dá algum erro pra mim.

Sim eu fiz o download do projeto e não funcionou, o que também pode ser é meu notbook que é antigo e pode ser que esteja interferindo no servidor. Realmente eu também não sei, já fiz de tudo aqui hahahaa