Problemas com CSS utilizando SPRING MVC

25 respostas
F

Boa Tarde Pessoal,

Estou com uma duvida que até hoje nao encontrei em nenhum tutorial ou página qualquer…
Queria saber como posso trabalhar com CSS e Spring MVC juntos.

Quando estou com Spring e quero chamar um documento CSS, da erro 404 (Nao encontrado), mas nao entendo o por que.

Segue o Codigo da pagina Home.jsp

<html>

<head>
	<title>Loja Virtual</title>
	<link rel="stylesheet" type="text/css" href="estilos.css"/>
	

</head>



<body>
	
	<div id="cabecalho">
		<div id="textoCabecalho">
			teste
		</div>
	</div>
		
	<div id="menuOpcoes">
		<ul>
			<li>
				<a >lista</a>
			</li>
			<li>
				<a >lista</a>
			</li>
			<li>
				<a >lista</a>
			</li>
			<li>
				<a >lista</a>
			</li>
			<li>
				<a >lista</a>
			</li>
			<li>
				<a >lista</a>
			</li>
			<li>
				<a >lista</a>
			</li>
		
		</ul>
	&lt;/div&gt;	
	
	
&lt;/body&gt;

&lt;/html&gt;

Codigo Controller Spring MVC

package controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

@Controller
public class ServletControlador {


	@RequestMapping("/cadastroCliente")
	public String CadastroCliente() {
		System.out.println("Executando Cadastro de Cliente");
		
		
		
		
		
		System.out.println("Finalizando Cadastro de Cliente");
		return "ok";
	}
	
	
}

Configuração WEB.XML

&lt;?xml version="1.0" encoding="UTF-8"?&gt;
&lt;web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5"&gt;
  &lt;display-name&gt;LojaVirtual&lt;/display-name&gt;
  &lt;welcome-file-list&gt;
    &lt;welcome-file&gt;index.html&lt;/welcome-file&gt;
    &lt;welcome-file&gt;index.htm&lt;/welcome-file&gt;
    &lt;welcome-file&gt;index.jsp&lt;/welcome-file&gt;
    &lt;welcome-file&gt;default.html&lt;/welcome-file&gt;
    &lt;welcome-file&gt;default.htm&lt;/welcome-file&gt;
    &lt;welcome-file&gt;default.jsp&lt;/welcome-file&gt;
  &lt;/welcome-file-list&gt;
  
  &lt;servlet&gt;
    &lt;servlet-name&gt;Spring MVC Dispatcher Servlet&lt;/servlet-name&gt;
    &lt;servlet-class&gt;
		org.springframework.web.servlet.DispatcherServlet
	&lt;/servlet-class&gt;
    &lt;init-param&gt;
      &lt;param-name&gt;contextConfigLocation&lt;/param-name&gt;
      &lt;param-value&gt;
			/WEB-INF/spring-context.xml
	  &lt;/param-value&gt;
    &lt;/init-param&gt;   
    &lt;load-on-startup&gt;1&lt;/load-on-startup&gt;
  &lt;/servlet&gt;
  &lt;servlet-mapping&gt;
    &lt;servlet-name&gt;Spring MVC Dispatcher Servlet&lt;/servlet-name&gt;
    &lt;url-pattern&gt;/&lt;/url-pattern&gt;
  &lt;/servlet-mapping&gt;
  
  
&lt;/web-app&gt;

Configuração spring-context.xml

&lt;?xml version="1.0" encoding="UTF-8"?&gt;

&lt;beans	xmlns="http://www.springframework.org/schema/beans"
		xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
		xmlns:context="http://www.springframework.org/schema/context"
		xmlns:mvc="http://www.springframework.org/schema/mvc"
		xsi:schemaLocation="http://www.springframework.org/schema/mvc
		http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd
		http://www.springframework.org/schema/beans
		http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
		http://www.springframework.org/schema/context
		http://www.springframework.org/schema/context/spring-context-3.0.xsd"&gt;

	&lt;context:component-scan base-package="controller" /&gt;
	&lt;mvc:annotation-driven /&gt;

&lt;bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"&gt;
	&lt;property name="prefix" value="/WEB-INF/views/" /&gt;
	&lt;property name="suffix" value=".jsp"/&gt;
&lt;/bean&gt;



&lt;/beans&gt;

Documento CSS

*{
margin: 0;
padding: 0;

}


#cabecalho{
	background-image: url("img/logo.png");
	background-repeat:repeat-x;
	width: 1330px;
	height: 230px;

}

#textoCabecalho{
	font-size: 30;
	color: white;
	position: absolute;
	left: 35%;
	
}

#menuOpcoes{
	background-color: red;
	display: table;
	width: 100%;
}

#menuOpcoes ul{
	list-style: none;
}

#menuOpcoes ul li{
	display: inline;
	
}

#menuOpcoes ul li a{
	background-color: gray;
	color: red;
	font-size: 20;
	text-decoration: none;
	float: left;
	padding: 5px 10px;
	margin-left: 3px;
}

#menuOpcoes ul li a:HOVER{
	background-color: blue;
	color: black;
	font-size: 20;
	text-decoration: none;
}

OBS.:

O documento CSS esta na pasta raiz do projeto
A pagina OK.jsp esta em uma pasta chamada views dentro de WB-INF

Por favor… quem puder ajudar, vou agradecer muito!!!
Obrigado!

25 Respostas

Z

O browser está procurando o arquivo css em outro lugar

Quando você não indica nada ele vai acabar procurando no mesmo lugar da sua URL

Faça assim:

<link rel="stylesheet" type="text/css" href="${pageContext.servletContext.ContextPath}/estilos.css"/>

Isso vai fazer ele procurar o seu arquivo direto em ‘/seucontexto/estilos.css’

F

Cara… MUITO OBRIGADO POR TER RESPONDIDO!!!
OBRIGADO MESMO…

Coloquei essa linha de codigo no meu projeto, mas nao funcionou…
tenho que configurar alguma outra coisa ?
Falta algum jar ?

Ele esta lançando esse erro

29/11/2012 13:52:11 org.apache.catalina.core.StandardWrapperValve invoke
GRAVE: Servlet.service() for servlet jsp threw exception
javax.el.PropertyNotFoundException: Property 'ContextPath' not found on type org.apache.catalina.core.ApplicationContextFacade
	at javax.el.BeanELResolver$BeanProperties.get(BeanELResolver.java:214)
	at javax.el.BeanELResolver$BeanProperties.access$400(BeanELResolver.java:191)
	at javax.el.BeanELResolver.property(BeanELResolver.java:300)
	at javax.el.BeanELResolver.getValue(BeanELResolver.java:81)
	at javax.el.CompositeELResolver.getValue(CompositeELResolver.java:54)
	at org.apache.el.parser.AstValue.getValue(AstValue.java:123)
	at org.apache.el.ValueExpressionImpl.getValue(ValueExpressionImpl.java:186)
	at org.apache.jasper.runtime.PageContextImpl.proprietaryEvaluate(PageContextImpl.java:938)
	at org.apache.jsp.home_jsp._jspService(home_jsp.java:59)
	at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
	at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:388)
	at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313)
	at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)
	at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:859)
	at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:602)
	at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
	at java.lang.Thread.run(Unknown Source)
C

Adiciona o DefaultServlet a teu web.xml

<servlet>  
    <servlet-name>Spring MVC Dispatcher Servlet</servlet-name>  
    <servlet-class>  
        org.springframework.web.servlet.DispatcherServlet  
    </servlet-class>  
    <init-param>  
      <param-name>contextConfigLocation</param-name>  
      <param-value>  
            /WEB-INF/spring-context.xml  
      </param-value>  
    </init-param>     
    <load-on-startup>1</load-on-startup>  
  </servlet>  

 <servlet>  
    <servlet-name>default</servlet-name>  
    <servlet-class>  
        org.apache.catalina.servlets.DefaultServlet
    </servlet-class>  
    <load-on-startup>2</load-on-startup>  
  </servlet>  

  <servlet-mapping>  
    <servlet-name>Spring MVC Dispatcher Servlet</servlet-name>  
    <url-pattern>/</url-pattern>  
  </servlet-mapping>  

  <servlet-mapping>  
    <servlet-name>default</servlet-name>  
    <url-pattern>/css/*</url-pattern>  
  </servlet-mapping>

 <servlet-mapping>  
    <servlet-name>default</servlet-name>  
    <url-pattern>/js/*</url-pattern>  
  </servlet-mapping>
Z

Errei, é contextPath. A primeira letra é minuscula

Ele deu esse erro porque é case sensitive

F

OBRIGADO MAIS UMA VEZ PESSOAL…

Mas ainda nao funcionou… rs continua na mesma… erro 404.

Adicionei o Servlet Default como foi sugerido e também corrigi o “contextPath” para a primeira letra em minusculo.

C

Cria um diretorio chamado css e coloca o estilos.css dentro dele depois modifica alinha onde faz a chamada pra ficar assim

<link rel="stylesheet" type="text/css" href="${pageContext.servletContext.contextPath}/css/estilos.css"/>

ou se estiver utilizando as tags jstl

<link rel="stylesheet" type="text/css" href='<c:url value="/css/estilos.css" />' />
Z

Seu arquivo se chama ‘estilos.css’ mesmo? Ele está no root mesmo?

F

Sim, Ele estava exatamente na raiz… agora coloquei em um pasta chamada “css”, mas nada de funcionar ainda.

Vou tentar com JSTL, mas é bem provavel que nao de certo… isso é muito estranho…

Segue o erro, quando vou Inspecionar no Google Chrome

Failed to load resource: the server responded with a status of 404 (Not Found) http://localhost:8080/LojaVirtual/css/estilos.css

Clico no “http://localhost:8080/LojaVirtual/css/estilos.css” ele abre no Chrome um documento CSS mas em branco.

Z

Vai na pasta da aplicação no server e verifica se o arquivo está realmente lá

F

Sim, a minha aplicação esta la

Z

O estilos.css está na pasta css no servidor?

F

Nao… me desculpa.
Na primeira vez q li. entendi que era pra olhar no Servers… pra veer se a aplicação estava la.

Agora eu fui na Pasta Servers do Projeto mesmo… e o que tem la é o seguinte

catalina.policy
catalina.properties
context.xml
server.xml
tomcat-users.xml
web.xml

Z

Fernandoware13:
Nao… me desculpa.
Na primeira vez q li. entendi que era pra olhar no Servers… pra veer se a aplicação estava la.

Agora eu fui na Pasta Servers do Projeto mesmo… e o que tem la é o seguinte

catalina.policy
catalina.properties
context.xml
server.xml
tomcat-users.xml
web.xml

Ainda não, rs

Qual IDE vc usa?

A pasta que eu digo é a pasta onde o servidor implanta as aplicações, por exemplo o tomcat:

tomcat_home/webapps/SeuProjeto/css <- precisa ver se o arquivo estilos.css está nessa pasta aqui

Caso seja a sua IDE seja o Netbeans, vai na pasta do seu projeto e abre a pasta build/web, a pasta css deve estar aqui.

F

rsrs Vamos ver se é isso agora…

Entrei na pasta do TOMCAT
dentro de “webapps” tenho DOCS, MANAGER, ROOT. só

mas na raiz da pasta TOMCAT tem uma pasta chamada “apache-tomcat-6.0.35”
e dentro dela tem “webapps” tbm… que contem DOCS, EXEMPLES, HOST-MANAGER, MANAGER, ROOT.

e nada dos projetos
Isso na versao 6 do tomcat…

Dei uma olhada no Tomcat 7

tem uma pasta chamada “wtpwebapps” é onde ficam os projetos.

Mas eu estou utilizando o Tomcat 6. esse Tomcat 7 que falei era de outros projetinhos testes que estava fazendo.

Outra coisa estranha… é que estou utilizando a versão 6 e nao encontrei em nenhuma pasta os projetos que tenho no Eclipse.

Z

Quanto ao eclipse vou ficar te devendo essa. Não sei como ele trabalha com projetos web.

F

Puts kssks Ferro entao. rsrs

Mas fmz Cara…

Muito Obrigado pela ajuda e a paciência…

BRIGADAO MESMO HEIM… VLWWWW

C

Como é que ta a estrutura de diretórios desse teu projeto!? na configuração me parece tudo certo, tais conseguindo acessar as tuas páginas ou só o css ta dando problema

F

Entao cara… esta tudo certo… o problema aparece quando coloco o Spring na Aplicação…
Nao entendo o pq acontece isso… que probleminha chato heim rs


Uploaded with ImageShack.us

Z

Cara, dá uma lida nesse post, acho que resolve o seu problema

Z

É como o CharlesAlves disse, vc precisa definir um mapeamento padrão para as urls qdo vc manda o spring usar o ‘/’.

Ele não encontra porque o spring está procurando algum mapeamento que bata com o seu css.

Vc pode mudar o mapeamento do Spring ou tentar algumas coisas dita no post acima

Obs: acho que só isso resolve seu problema

<mvc:default-servlet-handler/>
F

Blz cara… vlww…

Vou dar uma olhada ainda hoje…
Agora vou ter que sair…

Brigadao… Vlw

Acredito que estamos no caminho certo… agora é soh ter um pouco de sorte… rs

F

Obrigado a todos que me ajudaram… Agradeço de vdd pela boa vontade…
Hje vou dar uma lida nas informações recebidas… e amanha volto para ver
se alguem tem mais ideia… caso nao funcione.

Vlww

F

BOM DIA GALERA!!!

BOAS NOTICIAS

Depois de mais ou menos uns 3 meses tentando encontrar uma solução para o Spring MVC, onde ele
nao estava acessando nenhum tipo de arquivo stático, no meu caso CSS e IMAGENS.
Ontem resolvi buscar essa resposta no GUJ, por sorte tive duas pessoas que passaram um bom tempo
tentando me ajudar…
Em fim…

O problema tinha resolvido ontem mesmo pelo que o “CharlesAlves” me passou, mas como
nao soube interpreta-lo bem, só hoje vendo com mais calma um post que o “zoren” me passou que pude
perceber isso e resolvi com as duas formas.

Adicionando simplesmente esse trecho de codigo no WEB.XML, conseguimos acessar documentos CSS.

1° Opção (Leitura do CSS)

&lt;servlet-mapping&gt;    
   &lt;servlet-name&gt;default&lt;/servlet-name&gt;    
   &lt;url-pattern&gt;/css/*&lt;/url-pattern&gt;    
  &lt;/servlet-mapping&gt;

2 ° Opção (Leitura de CSS, imagens PNG e Java Script)

&lt;servlet-mapping&gt;
    &lt;servlet-name&gt;default&lt;/servlet-name&gt;
    &lt;url-pattern&gt;*.png&lt;/url-pattern&gt;
    &lt;url-pattern&gt;*.js&lt;/url-pattern&gt;
    &lt;url-pattern&gt;*.css&lt;/url-pattern&gt;
&lt;/servlet-mapping&gt;

No meu caso, utilizei a opção 2 pois preciso usar CSS e Imagem…

O WEB.XML POR COMPLETO FICOU DESTA FORMA

&lt;?xml version="1.0" encoding="UTF-8"?&gt;
&lt;web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5"&gt;
  &lt;display-name&gt;LojaVirtual&lt;/display-name&gt;
  &lt;welcome-file-list&gt;
    &lt;welcome-file&gt;index.html&lt;/welcome-file&gt;
    &lt;welcome-file&gt;index.htm&lt;/welcome-file&gt;
    &lt;welcome-file&gt;index.jsp&lt;/welcome-file&gt;
    &lt;welcome-file&gt;default.html&lt;/welcome-file&gt;
    &lt;welcome-file&gt;default.htm&lt;/welcome-file&gt;
    &lt;welcome-file&gt;default.jsp&lt;/welcome-file&gt;
  &lt;/welcome-file-list&gt;
  
  
  &lt;servlet&gt;
    &lt;servlet-name&gt;Spring MVC Dispatcher Servlet&lt;/servlet-name&gt;
    &lt;servlet-class&gt;
		org.springframework.web.servlet.DispatcherServlet
	&lt;/servlet-class&gt;
    &lt;init-param&gt;
      &lt;param-name&gt;contextConfigLocation&lt;/param-name&gt;
      &lt;param-value&gt;
			/WEB-INF/spring-context.xml
	  &lt;/param-value&gt;
    &lt;/init-param&gt;   
    &lt;load-on-startup&gt;1&lt;/load-on-startup&gt;
  &lt;/servlet&gt;
  
  &lt;servlet-mapping&gt;
    &lt;servlet-name&gt;Spring MVC Dispatcher Servlet&lt;/servlet-name&gt;
    &lt;url-pattern&gt;/&lt;/url-pattern&gt;
  &lt;/servlet-mapping&gt;
   

  &lt;servlet-mapping&gt;
    &lt;servlet-name&gt;default&lt;/servlet-name&gt;
    &lt;url-pattern&gt;*.png&lt;/url-pattern&gt;
    &lt;url-pattern&gt;*.js&lt;/url-pattern&gt;
    &lt;url-pattern&gt;*.css&lt;/url-pattern&gt;
&lt;/servlet-mapping&gt;

  
&lt;/web-app&gt;

Em fim…

É isso ae galera… mais um caso resolvido…
Quero agradecer aos caras que me deram ajuda zoren e CharlesAlves, MUITO OBRIGADO… DE VERDADE CARAS…
VCS NAO SABEM COMO ESTOU FELIZ COM A SOLUÇÃO DESSE POBLEMA.

VLW MESMO!!!

C

Sei bem como é essa felicidade kkkkkkkk

E também fico contente de poder ter ajudado, qualquer duvida pode mandar um MP com o link pra o post que podendo estarei disponível pra ajudar sempre, até mais.

T

Estava com esse mesmo problema e resolvi da seguinte forma:

Página .JSP
&lt;link rel="stylesheet" type="text/css" href="resources/css/style.css" /&gt;
spring-context.xml insira a linha <mvc:default-servlet-handler />
&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;
&lt;beans xmlns="http://www.springframework.org/schema/beans"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xmlns:context="http://www.springframework.org/schema/context"
  xmlns:mvc="http://www.springframework.org/schema/mvc"
  xsi:schemaLocation="http://www.springframework.org/schema/mvc 
    http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd
    http://www.springframework.org/schema/beans 
    http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
    http://www.springframework.org/schema/context 
    http://www.springframework.org/schema/context/spring-context-3.0.xsd"&gt;

	&lt;context:component-scan base-package="br.com.respawntimer" /&gt;
	&lt;mvc:annotation-driven /&gt;
        &lt;mvc:default-servlet-handler /&gt;
	
	&lt;bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"&gt;
		&lt;property name="prefix" value="/WEB-INF/views/"/&gt;
		&lt;property name="suffix" value=".jsp"/&gt;
	&lt;/bean&gt;
	
	&lt;bean id="messageSource" class="org.springframework.context.support.ReloadableResourceBundleMessageSource"&gt;
  		&lt;property name="basename" value="/WEB-INF/messages" /&gt;
	&lt;/bean&gt;
&lt;/beans&gt;

Talvez sirva de exemplo para futuras dúvidas.

Abraços.

Criado 29 de novembro de 2012
Ultima resposta 3 de dez. de 2012
Respostas 25
Participantes 4