JSP não exibe imagens nem encontra CSS e Javascript

3 respostas
java
I

Boa noite,

Estou com um problema estranho, estou tentando exibir imagens, mapear CSS e JS no jsp e não esta funcionando, simplesmente não encontra, o mais estranho é que estou usando a tag c:url da “jstl/core” tb tentei usar ${pageContext.request.contextPath} e não funcionou.

estou usando Servlet simples sem nenhum framework.

estrutura:

<head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>clientes atuantes</title>
        <link rel="stylesheet" href="<c:url value="/bootstrap/css/bootstrap.min.css"/>">
        <link rel="stylesheet" href="<c:url value="/css/layout.css"/>">
        <script type="text/javascript" src="<c:url value="/bootstrap/js/jquery-1.12.0.js" />"></script>
        <script type="text/javascript" src="<c:url value="/bootstrap/js/bootstrap.min.js" />"></script>
    </head>
    <body>
        
        <main>
            <div class="col-md-12">
                <div class="panel panel-default espacamentoExterno5">
                    
                    <div class="panel-body">
                        <p><img src="<c:url value="/img/ativo.gif"/>" /> ativo</p>
                        <p><img src="<c:url value="/img/congelado.gif"/>" /> congelado</p>
                        <p><img src="<c:url value="/img/cancelado.gif"/>" /> cancelado</p>

                    </div>
				</div>
			</div>
		</main>
	</body>

alguém sabe o q pode estar acontecendo?

3 Respostas

R

No seu código JSP:
Forma errada: <img src="<c:url value="/img/ativo.gif" />" />

Correção:
Forma correta: <img src="<c:url value="/img/ativo.gif" />" />

Só que eu acho que isso ainda não resolve, tipo, o que é isso: <c:url value="…" />. Seguindo os padrões da W3C, no html você informa os diretórios de qualquer imagem é só com a tag <img src=“url/diretorio/imagem.jpg” />, limpa e simples. Essas imagens estão dentro do seu projeto, então lembre-se de como navegar entre os diretórios. Você usa ./ que significa que estão dentro da mesma pasta, e …/ para voltar uma, …/…/ para voltar duas e assim por diante. E só a / para referir a pasta do projeto.

Nesse seu exemplo, a solução é muito simples, basta usar html limpo sem essa taglig. Agora quando você for servi imagens fora da aplicação, ai a coisa complica. Já vou adiantar para você, a melhor forma é através de uma url unica para cada imagem, como se fosse as paginas dos tópicos do GUJ que você navega livremente. E para exibir essas imagens, é um pouco chato para quem não tem experiencia(eu mesmo passei por isso). Procura depois nos meus tópicos sobre imagens, pois eu deixei exemplos simples de como exibir imagens com servlets e também a partir de um servidor de aplicação. Pelo servidor de aplicação é a melhor maneira para quase todos os casos.

I

não funcionou, e colocando dessa forma exibe o seguinte erro:

/WEB-INF/jsp/incidente.jsp(91,56) PWC6213: quote symbol expected

R

A forma que eu falei está correta, você só tem que saber como navegar até as suas imagens pelas pastas dos diretórios, igual como se fosse só uma pagina html aberta direto no browser.
Esse erro que você postou e que eu fui olhar novamente na imagem do seu classpath, é que você colocou a página produtos.jsp dentro da pasta WEB-INF. Tudo que esta dentro dessa pasta, não pode ser acessado pelo usuário. Essa pasta normalmente você só coloca arquivos de configuração do seu projeto ou alguns templades como cabeçalho, que através da tag <jsp:include page=“WEB-INF/templade/cabecalho.html” />, é que você acessa. Pesquisa mais sobre WEB-INF e navegação de pastas html.
Só uma dica pessoal, NUNCA use esses frameworks ou taglibs <c:url> ou <h:graphicImage>, isso só te deixa com mais dor de cabeça. O bom mesmo e que até grandes empresas usam é o bom html bem escrito.

Criado 29 de fevereiro de 2016
Ultima resposta 1 de mar. de 2016
Respostas 3
Participantes 2