Fala Julio, tudo bem ?
Clonei seu projeto por aqui pra testar localmente.
A primeira coisa que percebi ao montar o projeto é que você parece tê-lo criado a partir de um archetype do maven diferente do usado no projeto. Você está utilizando WebContent/
como root folder do seu projeto. No treinamento usamos o padrão src/main/webapp/
como pasta base na web.
Percebi isso porque ao testar o acesso (localhost:8080/casadocodigo/produtos
) percebi que o redirect pro login não achava a página. Quando vi na minha pasta que está sendo servida pelo Tomcat, não estava lá a pasta views, nem resources, e todos os seus arquivos e subpastas. =/
Testei colocar os arquivos manualmente pra ver se do ponto de vista de código tudo estava funcionando. Colei views/
e resources/
dentro da pasta do projeto deployado e tudo funcionou quando acessadas as uris: 1) localhost:8080/casadocodigo/login; e 2) localhost:8080/casadocodigo/produtos . O css está sendo carregado normalmente por aqui.
requisições para os css sendo feitas normalmente
Mas quando acessei através de localhost:8080/casadocodigo/produtos/
(com a barra no final) os css não foram trazidos. Em seguida testei localhost:8080/casadocodigo/login/
(também com a barra no final) e funcionou. Veja o seguinte:
Quando acessamos a página de produtos com a url com barra ao final, o endereço que ele tenta buscar o css fica: localhost:8080/casadocodigo/produtos/resources...
ao invés de acessar a pasta resources direto.
Isso está acontecendo pela forma como foi importado o css na página lista.jsp:
<title>Livros de Java, Android, iPhone, Ruby, PHP e muito mais -
Casa do Código</title>
<c:url value="/resources/css" var="cssPath" />
<link href="resources/css/bootstrap.css" rel="stylesheet">
<link href="resources/css/bootstrap-theme.min.css" rel="stylesheet">
Aqui você usou o caminho relativo no atributo href href="resources/css/bootstrap.css"
. Como o caminho é relativo o server entende que ele é relativo ao "diretorio" acessado anteriormente casadocodigo/produtos/
por isso adiciona resources/...
nessa ultima uri acessada (o que gera o problema).
Veja que na página de login isso não ocorre:
<c:url value="/resources/css" var="cssPath" />
<link rel="stylesheet" href="${cssPath }/bootstrap.min.css">
<link rel="stylesheet" href="${cssPath }/bootstrap-theme.min.css">
Aqui tudo é carregado pelo path correto trazido através de tag c:url: value="/resources/css"
. Com a barra inicial antes de resources
estamos utilizando um caminho absoluto. O que quer dizer que a requisição vai ser feita pra essa caminho a partir da pasta base do server e não de qualquer outro diretório. (localhost:8080/casadocodigo/resources).
Faça essa correção que vai corrigir o problema.
Espero ter ajudado. Abraço!