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

Bootstrap desativado

Pessoal tudo bem ?

Apos fazer o login no projeto, caso eu entre no link: http://localhost:8080/casadocodigo/produtos/ boostrap quebra, caso eu entre no link http://localhost:8080/casadocodigo/produtos, meu projeto executa o bootstrap, como faço pra configurar corretamente?

@Override
    protected void configure(HttpSecurity http) throws Exception {
        http.authorizeRequests()
        .antMatchers("/produtos/form").hasRole("ADMIN")
        .antMatchers("/carrinho/**").permitAll()
        .antMatchers(HttpMethod.GET, "/produtos").hasRole("ADMIN")
        .antMatchers(HttpMethod.POST, "/produtos").hasRole("ADMIN")
        .antMatchers("/produtos/**").permitAll()
        .antMatchers("/resources/**").permitAll()
        .antMatchers("/").permitAll()
        .anyRequest().authenticated()
        .and().formLogin().loginPage("/login").permitAll()
        .and().logout().logoutRequestMatcher(new AntPathRequestMatcher("/logout"));
    }

Ja realizei o teste com o metodo abaixo ativo ou desativado, mas sem sucesso.

@Override
    public void configure(WebSecurity web) throws Exception {
        web.ignoring().antMatchers("/resources/**");
    }
9 respostas

Fala Julio, tudo bem ?

Pelo que entendi o que diferencia a chamada é apenas a / ao final da URI ..

Olhando seu código não parece ter nada de errado. A configuração do configure(WebSecurity web) {..} que faz o ignoring() já é suficiente, não precisando manter a linha .antMatchers("/resources/**").permitAll() no método anterior.

Não consegui visualizar uma possível causa para o problema. Talvez ele esteja interpretando a barra como um request para uri diferente, mas mesmo assim deveria estar liberando as requisições.

Tente analisar pelo dev tools do chrome a aba Network quando faz as requisições para os endereços para ver o que ocorre com as requisições que o browser faz para os arquivos css. Caso veja problemas na requisição, clique sobre o nome do arquivo (que deve estar em vermelho) e poste aqui alguns detalhes: o status, a mensagem, se foi redirecionado para algum outro recurso, etc.

Espero ter ajudado. Abraço!

Rafael, vou bem graças a Deus e você como esta ?

Ao executar o link aparece os seguintes erros:

Refused to apply style from 'http://localhost:8080/casadocodigo/produtos/resources/css/bootstrap.css' because its MIME type ('text/html') is not a supported stylesheet MIME type, and strict MIME checking is enabled.



Refused to apply style from 'http://localhost:8080/casadocodigo/produtos/resources/css/bootstrap-theme.min.css' because its MIME type ('text/html') is not a supported stylesheet MIME type, and strict MIME checking is enabled.

Fala Julio,

Então ele está trazendo o css mas não deixa aplicar por que diz que seu MIME type é html e não css. Estranho!

Acessando http://localhost:8080/casadocodigo/produtos/resources/css/bootstrap.css direto no navegador você consegue ver o conteúdo do css ? Coloque aqui as primeiras linhas desse CSS pra poder dar uma olhada ?

Verifique (quando fizer a requisição para o css) quais são os headers da resposta do framework para esse arquivo. Suspeito que o content-type da resposta do server está vindo como html, ao invés de css. Pode parecer estranho ..

Tente colocar também como está sendo feita a importação do CSS na página, trecho da tag <link> utilizada.

Pesquisando aqui vi algumas dúvidas parecidas:

.. sobre essa questão. Em uma delas alguns colegas da comunidade citam que ao forçar type="text/html" na tag link na importação do arquivo, resolveu o problema. Mas ainda está bem obscuro pra mim.

Caso continue com problemas, se possível, compartilha aqui um link do github contendo seu código do projeto. Abraço!

Rafael,

Nao consigo acessar o link informado acima nao =/

As solucoes que voce me indicou nao solucionaram =/, segue o link do bitbucket para acesso:

https://bitbucket.org/Sleepk/spring-2

Caso nao consiga baixar o projeto migro ele para github :D

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.

página de login

home

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:

pau

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!

Rafael, tudo bem ?

Desculpa a demora para responder, tive muitos contra tempos essa semana =/, uma duvida quando voce abriu minha aplicacao por acaso ela quebrou (dando diversos erros?, pois nao estou conseguindo mais executa-la em minha maquina =/, apos formatar a maquina isto começou a acontecer)

Segue os erros

Description    Resource    Path    Location    Type
invalid LOC header (bad signature)    pom.xml    /casadocodigo    line 1    Maven Configuration Problem



Description    Resource    Path    Location    Type
web.xml is missing and <failOnMissingWebXml> is set to true    pom.xml    /casadocodigo    line 6    Maven Java EE Configuration Problem


Description    Resource    Path    Location    Type
Cannot load lifecycle mapping metadata for maven project MavenProject: br.com.casadocodigo:casadocodigo:0.0.1-SNAPSHOT @ C:\Users\souza\Documents\spring-2\casadocodigo\pom.xml Cause: Cannot parse version range: [,)    pom.xml    /casadocodigo    line 1    Maven Project Build Lifecycle Mapping Problem

Nao foi feito nenhuma atualizacao do repositorio que informei a voce, teria como me ajudar por favor?

Versao do maven

C:\Users\souza>mvn --version
Apache Maven 3.5.3 (3383c37e1f9e9b3bc3df5050c29c8aff9f295297; 2018-02-24T16:49:05-03:00)
Maven home: C:\Program Files\apache-maven-3.5.3\bin\..
Java version: 1.8.0_161, vendor: Oracle Corporation
Java home: C:\Program Files\Java\jdk1.8.0_161\jre
Default locale: pt_BR, platform encoding: Cp1252
OS name: "windows 10", version: "10.0", arch: "amd64", family: "windows"

C:\Users\souza>

Em relacao aos problemas logo acima, o problema foi solucionado.

Criei uma nova aplicacao no JBoss Forge, conforme o curso deixando as pastas padrao, realmente eu havia criado o projeto via maven, nao lembro o motivo =/.

Coloquei os arquivos (resource) no seguinte caminho ..\WEB-INF\views\resources.

mas não ha carregamento do bootstrap, permanecendo o erro inicial conforme abri a pergunta no fórum.

Tentei colocar com os links relativos conforme orientação sua.

Refused to apply style from 'http://localhost:8080/casadocodigo/produtos/resources/css/bootstrap-theme.min.css' because its MIME type ('text/html') is not a supported stylesheet MIME type, and strict MIME checking is enabled.
form:1 

Refused to apply style from 'http://localhost:8080/casadocodigo/produtos/resources/css/bootstrap.css' because its MIME type ('text/html') is not a supported stylesheet MIME type, and strict MIME checking is enabled.
form:1 

Refused to apply style from 'http://localhost:8080/casadocodigo/produtos/resources/css/bootstrap-theme.min.css' because its MIME type ('text/html') is not a supported stylesheet MIME type, and strict MIME checking is enabled.
form:1 

Refused to apply style from 'http://localhost:8080/casadocodigo/produtos/resources/css/bootstrap.css' because its MIME type ('text/html') is not a supported stylesheet MIME type, and strict MIME checking is enabled.

Caso eu faça carregamento via cdn os arquivos abrem normalmente

Oi Julio César, realmente não sei o que pode estar acontecendo com seu projeto. Testei por aqui e com aquele referido ajuste e o problema foi solucionado.

Para que isso não prejudique a sequência de estudos você pode usar como base o código deste repositório. Usamos como código base no treinamento de Spring MVC da Caelum, que tem a mesma ementa do curso da Alura.

Abraço!

solução!

Rafael,

muito obrigado pelo suporte, consegui resolver aqui depois de muita luta e surra e dias perdidos tentando solucionar kkkkk.

O que fiz foi copiar os arquivos de resources que tinha em uma das versoes do projeto que tenho no git e colei nesse projeto novo, sabe la Deus o porque tudo funcionou corretamente, todos os erros que havia comentado foram solucionados. :D

Vlw