Solucionado (ver solução)

Importante

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!

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.