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

Clicando em "Comprar": erro 404

Já não sei mais o que faço. Olho e re-olho as classes criadas neste capítulo, o .jsp também e está tudo correto, ao meu ver, mas dá sempre o seguinte erro quando clico em "comprar".

HTTP Status 404 -

type Status report

message

description The requested resource is not available.

Apache Tomcat/7.0.77

Link que aparece no browser: http://localhost:8080/casadocodigo/produtos/carrinho/add

Meu curso está travado por causa disso... não sei se é pq funciona apenas para Java 8 e o computador aqui do trabalho é Java 7 e prefiro não mexer na versão do Java daqui.

Segue o meu código para este capítulo:

Classe Controller:

package br.com.casadocodigo.loja.controllers;

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

import br.com.casadocodigo.loja.daos.ProdutoDAO;
import br.com.casadocodigo.loja.models.CarrinhoCompras;
import br.com.casadocodigo.loja.models.CarrinhoItem;
import br.com.casadocodigo.loja.models.Produto;
import br.com.casadocodigo.loja.models.TipoPreco;

@Controller
@RequestMapping("/carrinho")
@Scope(value=WebApplicationContext.SCOPE_REQUEST)
public class CarrinhoComprasController{

    @Autowired
    ProdutoDAO produtoDao;

    @Autowired
    CarrinhoCompras carrinho;

    @RequestMapping("/add")
    public ModelAndView add(Integer produtoId, TipoPreco tipo){
        ModelAndView modelAndView = new ModelAndView("redirect:/produtos");
        CarrinhoItem carrinhoItem = criaItem(produtoId, tipo);
        carrinho.add(carrinhoItem);
        return modelAndView;
    }

    private CarrinhoItem criaItem(Integer produtoId, TipoPreco tipo){
        Produto produto = produtoDao.find(produtoId);
        CarrinhoItem carrinhoItem = new CarrinhoItem(produto, tipo);
        return carrinhoItem;
    }
}

Carrinho Item

package br.com.casadocodigo.loja.models;

public class CarrinhoItem {

    private TipoPreco tipoPreco;
    private Produto produto;

    public CarrinhoItem(Produto produto, TipoPreco tipoPreco){
        this.setProduto(produto);
        this.setTipoPreco(tipoPreco);
    }

    public TipoPreco getTipoPreco() {
        return tipoPreco;
    }

    public void setTipoPreco(TipoPreco tipoPreco) {
        this.tipoPreco = tipoPreco;
    }

    public Produto getProduto() {
        return produto;
    }

    public void setProduto(Produto produto) {
        this.produto = produto;
    }

    @Override
    public int hashCode() {
        final int prime = 31;
        int result = 1;
        result = prime * result + ((produto == null) ? 0 : produto.hashCode());
        result = prime * result
                + ((tipoPreco == null) ? 0 : tipoPreco.hashCode());
        return result;
    }

    @Override
    public boolean equals(Object obj) {
        if (this == obj)
            return true;
        if (obj == null)
            return false;
        if (getClass() != obj.getClass())
            return false;
        CarrinhoItem other = (CarrinhoItem) obj;
        if (produto == null) {
            if (other.produto != null)
                return false;
        } else if (!produto.equals(other.produto))
            return false;
        if (tipoPreco != other.tipoPreco)
            return false;
        return true;
    }    
}

Carrinho Compras

package br.com.casadocodigo.loja.models;

import java.util.LinkedHashMap;
import java.util.Map;

import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Component;
import org.springframework.web.context.WebApplicationContext;

@Component
@Scope(value=WebApplicationContext.SCOPE_SESSION)
public class CarrinhoCompras {

    private Map<CarrinhoItem, Integer> itens = new LinkedHashMap<CarrinhoItem, Integer>();

    public void add(CarrinhoItem item){
        itens.put(item, getQuantidade(item) + 1);
    }

    private int getQuantidade(CarrinhoItem item) {
        if(!itens.containsKey(item)){
            itens.put(item, 0);
        }
        return itens.get(item);
    }

    //expressão lambda comentada, pois estou em um computador Java 7
    //public int getQuantidade(){
      //  return itens.values().stream().reduce(0, (proximo, acumulador) -> (proximo + acumulador));
    //}
}

Produto

package br.com.casadocodigo.loja.models;

import java.util.Calendar;
import java.util.List;

import javax.persistence.ElementCollection;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;

import org.springframework.format.annotation.DateTimeFormat;

@Entity
public class Produto {

    @Id @GeneratedValue(strategy=GenerationType.IDENTITY) 
    private Integer id;
    private String titulo;
    private String descricao; 
    private int paginas;

    @ElementCollection
    private List<Preco> precos;

    @DateTimeFormat
    private Calendar dataLancamento;

    private String sumarioPath;

    public String getTitulo() {
        return titulo;
    }
    public void setTitulo(String titulo) {
        this.titulo = titulo;
    }
    public String getDescricao() {
        return descricao;
    }
    public void setDescricao(String descricao) {
        this.descricao = descricao;
    }
    public int getPaginas() {
        return paginas;
    }
    public void setPaginas(int paginas) {
        this.paginas = paginas;
    }

    @Override
    public String toString() {
        return "Produto [titulo=" + titulo + ", descricao=" + descricao + ", paginas=" + paginas + "]";
    }
    public Integer getId() {
        return id;
    }
    public void setId(Integer id) {
        this.id = id;
    }
    public List<Preco> getPrecos() {
        return precos;
    }
    public void setPrecos(List<Preco> precos) {
        this.precos = precos;
    }
    public Calendar getDataLancamento() {
        return dataLancamento;
    }
    public void setDataLancamento(Calendar dataLancamento) {
        this.dataLancamento = dataLancamento;
    }
    public String getSumarioPath() {
        return sumarioPath;
    }
    public void setSumarioPath(String sumarioPath) {
        this.sumarioPath = sumarioPath;
    }

    @Override
    public int hashCode() {
        final int prime = 31;
        int result = 1;
        result = prime * result + ((id == null) ? 0 : id.hashCode());
        return result;
    }
    @Override
    public boolean equals(Object obj) {
        if (this == obj)
            return true;
        if (obj == null)
            return false;
        if (getClass() != obj.getClass())
            return false;
        Produto other = (Produto) obj;
        if (id == null) {
            if (other.id != null)
                return false;
        } else if (!id.equals(other.id))
            return false;
        return true;
    }


}

AppWebConfiguration

package br.com.casadocodigo.loja.conf;

import org.springframework.context.MessageSource;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.support.ReloadableResourceBundleMessageSource;
import org.springframework.format.datetime.DateFormatter;
import org.springframework.format.datetime.DateFormatterRegistrar;
import org.springframework.format.support.DefaultFormattingConversionService;
import org.springframework.format.support.FormattingConversionService;
import org.springframework.web.multipart.MultipartResolver;
import org.springframework.web.multipart.support.StandardServletMultipartResolver;
import org.springframework.web.servlet.config.annotation.EnableWebMvc;
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
import org.springframework.web.servlet.view.InternalResourceViewResolver;

import br.com.casadocodigo.loja.controllers.HomeController;
import br.com.casadocodigo.loja.daos.ProdutoDAO;
import br.com.casadocodigo.loja.infra.FileSaver;
import br.com.casadocodigo.loja.models.CarrinhoCompras;

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

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

    @Bean
    public MessageSource messageSource() {
        ReloadableResourceBundleMessageSource messageSource =
                new ReloadableResourceBundleMessageSource();
        messageSource.setBasename("/WEB-INF/message");
        messageSource.setDefaultEncoding("UTF-8");
        messageSource.setCacheSeconds(1);

        return messageSource;
    }

    @Bean
    public FormattingConversionService mvcConversionService(){

        DefaultFormattingConversionService conversionService = new DefaultFormattingConversionService();
        DateFormatterRegistrar registrar = new DateFormatterRegistrar();
        registrar.setFormatter(new DateFormatter("dd/MM/yyyy"));
        registrar.registerFormatters(conversionService);

        return conversionService;
    }

    @Bean
    public MultipartResolver multipartResolver(){
        return new StandardServletMultipartResolver();
    }

    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        registry.addResourceHandler("/resources/**").addResourceLocations(
                "/resources/");
    }
}

detalhe.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ 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>
    <c:url value="/" var="contextPath" />
      <meta charset="utf-8"/>
          <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"/>
          <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1"/>
        <link rel="icon"
            href="//cdn.shopify.com/s/files/1/0155/7645/t/177/assets/favicon.ico?11981592617154272979"
            type="image/ico" />
        <link href="https://plus.googlecom/108540024862647200608"
            rel="publisher"/>
        <title>${produto.titulo} - Casa do Código</title>
        <link href="${contextPath}resources/css/cssbase-min.css"
            rel="stylesheet" type="text/css" media="all" />
        <link href='http://fonts.googleapis.com/css?family=Droid+Sans:400,700'
            rel='stylesheet'/>
        <link href="${contextPath}resources/css/fonts.css"
            rel="stylesheet" type="text/css" media="all" />
        <link href="${contextPath}resources/css/fontello-ie7.css"
            rel="stylesheet" type="text/css" media="all" />
        <link href="${contextPath}resources/css/fontello-embedded.css"
            rel="stylesheet" type="text/css" media="all" />
        <link href="${contextPath}resources/css/fontello.css"
            rel="stylesheet" type="text/css" media="all" />
        <link href="${contextPath}resources/css/style.css"
            rel="stylesheet" type="text/css" media="all" />
        <link href="${contextPath}resources/css/layout-colors.css"
            rel="stylesheet" type="text/css" media="all" />
        <link href="${contextPath}resources/css/responsive-style.css"
            rel="stylesheet" type="text/css" media="all" />
        <link href="${contextPath}resources/css/guia-do-programador-style.css" 
            rel="stylesheet" type="text/css"  media="all"  />
        <link href="${contextPath}resources/css/produtos.css" 
            rel="stylesheet" type="text/css"  media="all"  />
        <link rel="canonical" href="http://www.casadocodigo.com.br/" />    
</head>
<body class="produto">

  <header id="layout-header">
        <div class="clearfix container">
            <a href="/" id="logo">
            </a>
            <div id="header-content">
                <nav id="main-nav">

                    <ul class="clearfix">
                        <li><a href="/carrinho" rel="nofollow">Carrinho(${carrinhoCompras.quantidade})</a></li>
                        <li><a href="/pages/sobre-a-casa-do-codigo" rel="nofollow">Sobre Nós</a></li>

                        <li><a href="/pages/perguntas-frequentes" rel="nofollow">Perguntas Frequentes</a></li>
                    </ul>
                </nav>
            </div>
        </div>
    </header>
    <nav class="categories-nav">
        <ul class="container">
            <li class="category"><a href="http://www.casadocodigo.com.br">Home</a></li>
            <li class="category"><a href="/collections/livros-de-agile">
                    Agile </a></li>
            <li class="category"><a href="/collections/livros-de-front-end">
                    Front End </a></li>
            <li class="category"><a href="/collections/livros-de-games">
                    Games </a></li>
            <li class="category"><a href="/collections/livros-de-java">
                    Java </a></li>
            <li class="category"><a href="/collections/livros-de-mobile">
                    Mobile </a></li>
            <li class="category"><a
                href="/collections/livros-desenvolvimento-web"> Web </a></li>
            <li class="category"><a href="/collections/outros"> Outros </a></li>
        </ul>
    </nav>

    <article id="${produto.id}">
          <header id="product-highlight" class="clearfix">
            <div id="product-overview" class="container">
              <img width="280px" height="395px" src="http://cdn.shopify.com/s/files/1/0155/7645/products/css-eficiente-featured_large.png?v=1435245145" class="product-featured-image" />
              <h1 class="product-title">${produto.titulo}</h1>
              <p class="product-author">
                <span class="product-author-link">

                </span>
              </p>    

            <p class="book-description">
                ${produto.descricao}
            </p>
            </div>
          </header>


      <section class="buy-options clearfix">
      <form action='<c:url value="/carrinho/add"/>' method="post" class="container">       
        <ul id="variants" class="clearfix">
            <input type="hidden" value="${produto.id}" value="podutoId" />                    
            <c:forEach items="${produto.precos}" var="preco">
                <li class="buy-option" itemprop="offers" itemscope >
                    <input type="radio" name="tipo" class="variant-radio" id="tipo" value="${preco.tipo}"  checked >
                    <label itemprop="category" itemscope class="variant-label">
                          ${preco.tipo} 
                    </label>
                    <small class="compare-at-price">R$ 39,90</small>
                    <p class="variant-price">${preco.valor}</p>
                </li>
            </c:forEach>           
        </ul>
        <button type="submit" class="submit-image icon-basket-alt" alt="Compre Agora" title="Compre Agora ${produto.titulo}"></button>        
      </form>

    </section>

    <div class="container">
      <section class="summary">
        <ul>
              <li><h3>E muito mais... <a href='/pages/sumario-java8'>veja o sumário</a>.</h3></li>
        </ul>
      </section>

      <section class="data product-detail">
        <h2 class="section-title">Dados do livro:</h2>
        <p>Número de páginas: <span>${produto.paginas}</span></p>
        <p></p>
        <p>Data de publicação: <span class="publishedAt">
            <fmt:formatDate pattern = "dd/MM/yyyy" value="${produto.dataLancamento.time}" /> 
            </span></p>
        <p>Encontrou um erro? <a href='/submissao-errata' target='_blank'>Submeta uma errata</a></p>
      </section>
    </div>

    </article>    

    <footer id="layout-footer">
        <div class="clearfix container">
            <div id="collections-footer">
                <!-- cdc-footer -->
                <p class="footer-title">Coleções de Programação</p>
                <ul class="footer-text-links">
                    <li><a href="/collections/livros-de-java">Java</a></li>
                    <li><a href="/collections/livros-desenvolvimento-web">Desenvolvimento
                            Web</a></li>
                    <li><a href="/collections/livros-de-mobile">Mobile</a></li>
                    <li><a href="/collections/games">Games</a></li>
                    <li><a href="/collections/livros-de-front-end">Front End</a></li>
                </ul>
                <p class="footer-title">Outros Assuntos</p>
                <ul class="footer-text-links">
                    <li><a href="/collections/livros-de-agile">Agile</a></li>
                    <li><a href="/collections/outros">e outros...</a></li>
                </ul>
            </div>
            <div id="social-footer">
                <!-- books-footer -->
                <p class="footer-title">Links da Casa do Código</p>
                <ul class="footer-text-links">
                    <li><a href="http://livros.casadocodigo.com.br" rel="nofollow">Meus
                            E-books</a></li>
                    <li><a href="/pages/sobre-a-casa-do-codigo">Sobre a Casa
                            do Código</a></li>
                    <li><a href="/pages/perguntas-frequentes">Perguntas
                            Frequentes</a></li>
                    <li><a href="https://www.caelum.com.br">Caelum - Ensino e
                            Inovação</a></li>
                    <li><a href="http://www.codecrushing.com/" rel="nofollow">Code
                            Crushing</a></li>
                    <li><a
                        href="http://www.casadocodigo.com.br/pages/politica-de-privacidade"
                        rel="nofollow">Política de Privacidade</a></li>
                </ul>
                <p class="footer-title">Redes Sociais</p>
                <ul>
                    <li class="social-links"><a
                        href="http://www.twitter.com/casadocodigo" target="_blank"
                        id="twitter" rel="nofollow">Facebook</a> <a
                        href="http://www.facebook.com/casadocodigo" target="_blank"
                        id="facebook" rel="nofollow">Twitter</a></li>
                </ul>
            </div>
            <div id="newsletter-footer">
                <!-- social-footer -->
                <p class="footer-title">Receba as Novidades e Lançamentos</p>
                <div id="form-newsletter">
                    <form
                        action=""
                        method="POST" id="ss-form" class="form-newsletter">
                        <ul>
                            <li><input type="hidden" name="pageNumber" value="0"/><input
                                type="hidden" name="backupCache" value=""/><input
                                type="email" name="entry.0.single" value="" class="ss-q-short"
                                id="entry_0" placeholder="seu@email.com"/></li>
                            <li><input type="submit" name="submit"
                                value="Quero Receber!" id="submit-newsletter"/></li>
                        </ul>
                    </form>
                    <ul>
                        <li class="ie8"><a
                            href=""
                            rel="nofollow">Receba as Novidades e Lançamentos</a></li>
                    </ul>
                </div>
                <ul class="footer-payments">
                    <li></li>
                    <li></li>
                </ul>
            </div>
        </div>
    </footer>
</body>
</html>

Já tem algumas alterações do capítulo 12, pois preciso avançar no curso, mas como o capítulo 13 envolve e muito o que foi feito no 11, não vou conseguir avançar e nem terminar o curso. Por favor, se alguém puder me ajudar, ficarei muito agradecido. O erro acontece depois que faço a alteração no .jsp passando o "c:url"

28 respostas

Olá Daniel! Poderia postar projeto no Github e me passar o link?

Poderia me auxiliar como faço isso? Abraço.

Para facilitar, você pode zipar o projeto mandar p nuvem(exe: Dropbox) e mandar o link para que possa baixar.

Serve Google Drive? Abs... se servir, me diga o e-mail para eu já compartilhar...

carlos.er7@gmail.com

Feito. Já deve ter recebido a notificação...

Daniel, eu testei seu projeto mas ele estava quebrando em outras partes tbm, pra facilitar as coisas testa o projeto do link abaixo, aqui ele está funcionando perfeitamente. Ser houver algum vc manda p mim.

Projeto até a aula 11 do módulo 1

https://www.dropbox.com/sh/irqj74uedu8shbn/AADUdHI7CqRLQYXv5EBcLZyla?dl=0#

Ok. Só queria entender o erro, mas tá ok. Irei baixar.

Bom, quando importo o projeto dá erro 404 na página principal. E, sim, já mudei o build path e o java compiler para a minha versão do Java. :(

Segue o erro: HTTP Status 404 - /casadocodigo/

type Status report

message /casadocodigo/

description The requested resource is not available.

Apache Tomcat/7.0.77

Tem algo mais que eu preciso fazer, que talvez tenha esquecido?

Daniel, tente o seguinte.

Vá na opção project (menu superior do Eclipse) e de um clean...

Depois, ainda dentro do Eclipse clique com o botão direito no seu projeto e vá até a opção Maven e clique em Update Project.. De um clear tbm no seu Tomcat e restart o mesmo.

solução!

Daniel, seguinte... Eu analisei novamente aquele projeto que você me enviou, e pelo menos aqui p mim ele estava gerando dois erros 500:

1º Erro. Ao tentar ir para a página de detalhe a view chama a função getQuantidade() do CarrinhoCompra porém a mesma não está implementada, está comentada.

Código da view chamando o método:

<li><a href="/carrinho" rel="nofollow">Carrinho(${carrinhoCompras.quantidade})</a></li>

Então eu implementei a mesma no padrão Java7:

public int getQuantidade(){
    //Implementação Java 7
    int qtde = 0;
    for (CarrinhoItem item : itens.keySet()) {
        qtde += itens.get(item);
    }
    return qtde;

    //Implementação Java 8
    //return itens.values().stream().reduce(0, (proximo, acumulador) -> (proximo + acumulador));
}

2º Erro. Ao tentar "Comprar" um produto, o parâmetro produtoId não estava sendo enviado da view para o controller, apenas o "tipo", pois seu input hidden estava da seguinte forma:

<input type="hidden" value="${produto.id}" value="podutoId" />

Como pode ver existem dois "value" você esqueceu do "name". A forma correta desse input hidden é:

<input type="hidden" name="produtoId" value="${produto.id}" />

Carlos, bom dia! Obrigado pela ajuda. Já corrigi o código. Mas o problema do erro 404 ainda persiste quando tento entrar na página inicial do projeto, ou seja, meu projeto parou de funcionar de vez. Fiz aquele passo a passo que você falou acima e além de o Java compiler voltar para java 4 e eu tendo que recolocar para java 7, o erro continua. Ficou realmente complicado agora... não sei mais o que fazer.

Daniel, limpa seu console, reinicia o servidor e posta o log que aparece.

Abr 26, 2017 10:32:24 AM org.apache.tomcat.util.digester.SetPropertiesRule begin WARNING: [SetPropertiesRule]{Server/Service/Engine/Host/Context} Setting property 'source' to 'org.eclipse.jst.jee.server:gerenciador' did not find a matching property. Abr 26, 2017 10:32:24 AM org.apache.tomcat.util.digester.SetPropertiesRule begin WARNING: [SetPropertiesRule]{Server/Service/Engine/Host/Context} Setting property 'source' to 'org.eclipse.jst.jee.server:casadocodigo' did not find a matching property. Abr 26, 2017 10:32:24 AM org.apache.catalina.startup.VersionLoggerListener log INFO: Server version: Apache Tomcat/7.0.77 Abr 26, 2017 10:32:24 AM org.apache.catalina.startup.VersionLoggerListener log INFO: Server built: Mar 28 2017 16:01:48 UTC Abr 26, 2017 10:32:24 AM org.apache.catalina.startup.VersionLoggerListener log INFO: Server number: 7.0.77.0 Abr 26, 2017 10:32:24 AM org.apache.catalina.startup.VersionLoggerListener log INFO: OS Name: Windows 7 Abr 26, 2017 10:32:24 AM org.apache.catalina.startup.VersionLoggerListener log INFO: OS Version: 6.1 Abr 26, 2017 10:32:24 AM org.apache.catalina.startup.VersionLoggerListener log INFO: Architecture: x86 Abr 26, 2017 10:32:24 AM org.apache.catalina.startup.VersionLoggerListener log INFO: Java Home: C:\caixa\desenv\view_siweg\SIWEG\03-Implementacao\Fontes\AmbienteSIWEG\jdk1.7.0_25\jre Abr 26, 2017 10:32:24 AM org.apache.catalina.startup.VersionLoggerListener log INFO: JVM Version: 1.7.0_25-b17 Abr 26, 2017 10:32:24 AM org.apache.catalina.startup.VersionLoggerListener log INFO: JVM Vendor: Oracle Corporation Abr 26, 2017 10:32:24 AM org.apache.catalina.startup.VersionLoggerListener log INFO: CATALINA_BASE: C:\Users\daniel\workspace.metadata.plugins\org.eclipse.wst.server.core\tmp0 Abr 26, 2017 10:32:24 AM org.apache.catalina.startup.VersionLoggerListener log INFO: CATALINA_HOME: C:\Daniel\apache-tomcat-7.0.77 Abr 26, 2017 10:32:24 AM org.apache.catalina.startup.VersionLoggerListener log INFO: Command line argument: -Dcatalina.base=C:\Users\daniel\workspace.metadata.plugins\org.eclipse.wst.server.core\tmp0 Abr 26, 2017 10:32:24 AM org.apache.catalina.startup.VersionLoggerListener log INFO: Command line argument: -Dcatalina.home=C:\Daniel\apache-tomcat-7.0.77 Abr 26, 2017 10:32:24 AM org.apache.catalina.startup.VersionLoggerListener log INFO: Command line argument: -Dwtp.deploy=C:\Users\daniel\workspace.metadata.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps Abr 26, 2017 10:32:24 AM org.apache.catalina.startup.VersionLoggerListener log INFO: Command line argument: -Djava.endorsed.dirs=C:\Daniel\apache-tomcat-7.0.77\endorsed Abr 26, 2017 10:32:24 AM org.apache.catalina.startup.VersionLoggerListener log INFO: Command line argument: -Dfile.encoding=Cp1252 Abr 26, 2017 10:32:24 AM org.apache.catalina.core.AprLifecycleListener lifecycleEvent INFO: The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: C:\caixa\desenv\view_siweg\SIWEG\03-Implementacao\Fontes\AmbienteSIWEG\jdk1.7.0_25\bin;C:\Windows\Sun\Java\bin;C:\Windows\system32;C:\Windows;C:/caixa/desenv/view_siweg/SIWEG/03-Implementacao/Fontes/AmbienteSIWEG/jdk1.7.0_25/bin/../jre/bin/client;C:/caixa/desenv/view_siweg/SIWEG/03-Implementacao/Fontes/AmbienteSIWEG/jdk1.7.0_25/bin/../jre/bin;C:/caixa/desenv/view_siweg/SIWEG/03-Implementacao/Fontes/AmbienteSIWEG/jdk1.7.0_25/bin/../jre/lib/i386;C:\Program Files (x86)\Intel\iCLS Client\;C:\Program Files\Intel\iCLS Client\;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Program Files (x86)\Intel\OpenCL SDK\2.0\bin\x86;C:\Program Files (x86)\Intel\OpenCL SDK\2.0\bin\x64;C:\Program Files\Intel\Intel(R) Management Engine Components\DAL;C:\Program Files\Intel\Intel(R) Management Engine Components\IPT;C:\Program Files (x86)\Intel\Intel(R) Management Engine Components\DAL;C:\Program Files (x86)\Intel\Intel(R) Management Engine Components\IPT;C:\caixa\desenv\view_siweg\SIWEG\03-Implementacao\Fontes\AmbienteSIWEG\jdk1.7.0_25\bin;C:\Program Files (x86)\Attachmate\EXTRA!\;C:\Program Files\MySQL\MySQL Server 5.7\bin;C:\Program Files (x86)\Brackets\command;C:\Windows\System32;C:\forge\bin;;C:\Program Files\eclipse;;. Abr 26, 2017 10:32:25 AM org.apache.coyote.AbstractProtocol init INFO: Initializing ProtocolHandler ["http-bio-8080"] Abr 26, 2017 10:32:25 AM org.apache.coyote.AbstractProtocol init INFO: Initializing ProtocolHandler ["ajp-bio-8009"] Abr 26, 2017 10:32:25 AM org.apache.catalina.startup.Catalina load INFO: Initialization processed in 585 ms Abr 26, 2017 10:32:25 AM org.apache.catalina.core.StandardService startInternal INFO: Starting service Catalina Abr 26, 2017 10:32:25 AM org.apache.catalina.core.StandardEngine startInternal INFO: Starting Servlet Engine: Apache Tomcat/7.0.77 Abr 26, 2017 10:32:25 AM org.apache.coyote.AbstractProtocol start INFO: Starting ProtocolHandler ["http-bio-8080"] Abr 26, 2017 10:32:25 AM org.apache.coyote.AbstractProtocol start INFO: Starting ProtocolHandler ["ajp-bio-8009"] Abr 26, 2017 10:32:25 AM org.apache.catalina.startup.Catalina start INFO: Server startup in 771 ms

Daniel, posta aqui a stacktrace do erro quando você tenta acessar a raiz, ou qualquer outra url.

Verifique se o projeto está dentro do Tomcat. Seu Server startup está muito baixo e o Tomcat tbm não detector o classpath de nenhum projeto.

Carlos, está sim... já adicionei e removi diversas vezes. Como falei, já esgotei tudo o que poderia fazer e completamente sem entender o pq de ter parado de funcionar, pois a única coisa que fiz foi importar o projeto que você me passou e como não deu certo, retrocedi e reimportei o meu, que estava funcionando antes dessas mudanças.

Leonardo, não entendi muito bem o que você quer q eu poste. Como faço para te passar a stacktrace do erro?

Carlos, eu também notei isso... está iniciando muito rápido o tomcat.

Não sei se isso pode ajudar na tentativa da solução do erro... mas a pasta target está vindo incompleta na importação do projeto...

Bom, consegui acessar o projeto novamente. O problema estava no pom.xml, pois estava apontando para o Java 8 e a versão do Java da máquina que estou usando é a 7.

Mas o problema do tópico ainda não está solucionado... Hehehehe... continuarei tentando aqui.

o eclipse não mostra que está lendo o seu projeto... meu chute: remove o tomcat e adiciona de novo. Só que quando adicionar, da dois cliques e seleciona a opção de usar a instalação original do tomcat em vez de usar a do plugin do eclipse.

Enquanto não aparecer o log do spring no seu console, nem adianta ir para outro passo.

Clicando no botão comprar o erro mudou agora... NullPointerException, segue:

HTTP Status 500 - Request processing failed; nested exception is java.lang.NullPointerException

type Exception report

message Request processing failed; nested exception is java.lang.NullPointerException

description The server encountered an internal error that prevented it from fulfilling this request.

exception

org.springframework.web.util.NestedServletException: Request processing failed; nested exception is java.lang.NullPointerException
    org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:973)
    org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:863)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:650)
    org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:837)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:731)
    org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:88)
    org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
    org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
root cause

java.lang.NullPointerException
    br.com.casadocodigo.loja.controllers.CarrinhoComprasController.criaItem(CarrinhoComprasController.java:36)
    br.com.casadocodigo.loja.controllers.CarrinhoComprasController.add(CarrinhoComprasController.java:30)
    sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    java.lang.reflect.Method.invoke(Method.java:606)
    org.springframework.web.method.support.InvocableHandlerMethod.invoke(InvocableHandlerMethod.java:215)
    org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:132)
    org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:104)
    org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandleMethod(RequestMappingHandlerAdapter.java:781)
    org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:721)
    org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:83)
    org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:943)
    org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:877)
    org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:961)
    org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:863)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:650)
    org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:837)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:731)
    org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:88)
    org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
    org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
note The full stack trace of the root cause is available in the Apache Tomcat/7.0.77 logs.

Apache Tomcat/7.0.77

Acredito que este erro seja referente aquele 2º erro que eu apontei acima.

Mas já consertei...

segue o trecho do código da .jsp

      <form action='<c:url value="/carrinho/add"/>' method="post" class="container">       
        <ul id="variants" class="clearfix">
            <input type="hidden" name="podutoId" value="${produto.id}" />                    
            <c:forEach items="${produto.precos}" var="preco">
                <li class="buy-option" itemprop="offers" itemscope >
                    <input type="radio" name="tipo" class="variant-radio" id="tipo" value="${preco.tipo}"  checked >
                    <label itemprop="category" itemscope class="variant-label">
                          ${preco.tipo} 
                    </label>
                    <small class="compare-at-price">R$ 39,90</small>
                    <p class="variant-price">${preco.valor}</p>
                </li>
            </c:forEach>           
        </ul>
        <button type="submit" class="submit-image icon-basket-alt" alt="Compre Agora" title="Compre Agora ${produto.titulo}"></button>        
      </form>

Seu name está escrito errado, está "pOdutoId".

pô... mal minha... tá "pOduto" ao ínves de "produto" kkkkkkkkk

FUNCIONOU!!!!!!!!!!!!! Muito obrigado, Carlos... pela paciência, amigo!

Aleluia irmão \o/ kkk!

Imagina Daniel, no que eu puder ajudar pode contar.