CSS не отражает проект сборки Maven Spring-Hibernate

У меня есть проект Spring-Hibernate, построенный на Maven в Eclipse с использованием плагина Eclipse M2E. Хотя моя функциональность работает нормально, мне нужно придать приложению некоторую визуальную привлекательность, и я хочу использовать для этого CSS. Однако мой CSS никогда не отражается на приложении. Я уже пытался посмотреть на пару тесно связанных вопросов о stackoverflow, но не смог понять это правильно.

Spring не находит файлы ресурсов (css, jsp...)

Внешний CSS не загружается на веб-страницу

Вот что я пробовал (много хитов и испытаний на самом jsp):

index.jsp

> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
> "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html
> xmlns="http://www.w3.org/1999/xhtml"> <%@page contentType="text/html"
> %>
> 
> <%@taglib uri="http://www.springframework.org/tags" prefix="spring"%>
> <%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> <%@page
> session="true"%> <html> <head> <link rel="stylesheet"
> href="${pageContext.request.contextPath}/styles.css" /> <link
> rel="stylesheet" href="styles.css" /> <link rel="stylesheet"
> href="<c:url value="style.css"/>"  type="text/css" />   

    <!-- even tried this with some reference I got somewhere, 
while this atleast gave the body the color as mentioned in CSS, 
nothing else worked including the form fields-->

<style>
<%@include file="styles.css"%>
</style>
</head>

web.xml

<?xml version="1.0" encoding="UTF-8"?>
<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">

    <display-name>Spring MVC Application</display-name>

    <!-- Spring MVC -->
    <servlet>
        <servlet-name>mvc-dispatcher</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>mvc-dispatcher</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>

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

    <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>

    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>
            /WEB-INF/spring-security.xml
        </param-value>
    </context-param>

    <!-- Spring Security -->
    <filter>
        <filter-name>springSecurityFilterChain</filter-name>
        <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
    </filter>

    <filter-mapping>
        <filter-name>springSecurityFilterChain</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>

</web-app>

Сопоставление запросов в контроллере:

@RequestMapping("/")
public ModelAndView welcomePage(Map<String, Object> map) {

    ModelAndView model = new ModelAndView();
    model.setViewName("index");

    // more code

    return model;

}

person Sadique Khan    schedule 16.05.2014    source источник
comment
Вы очищаете кеш браузера?   -  person mikebolt    schedule 16.05.2014
comment
Вы пробовали этот? stackoverflow .com/questions/13376473/   -  person nhavar    schedule 16.05.2014
comment
Вы уверены, что ваш css включен в архив развертывания? Звучит глупо, но вы проверили наличие css на сервере. Заставить maven включать нужные файлы для сборки может быть сложно в зависимости от их пути и расширения. Возможно, вам придется применить некоторую пользовательскую фильтрацию.   -  person skegg99    schedule 16.05.2014
comment
ваш комментарий звучит интересно @skegg99, не могли бы вы уточнить?   -  person Sadique Khan    schedule 21.05.2014
comment
@nhavar, да, я пробовал это и раньше, небольшая доработка решила проблему. Спасибо :)   -  person Sadique Khan    schedule 21.05.2014


Ответы (2)


Вам нужно убедиться, что ваш файл css находится в правильном месте. Например, вот структура, которую я использовал:

\webapp\resources\css\mycss.css
\webapp\resources\images
\webapp\WEB-INF\

в моем jsp я ссылаюсь на css следующим образом:

<link href="<c:url value="/resources/css/mycss.css"/>" rel="stylesheet">

с spring-mvc вам также нужно указать, где находятся ресурсы, в вашем файле spring-mvc.xml добавьте следующее:

<mvc:resources location="/resources/" mapping="/resources/**" />
person Frederic Close    schedule 16.05.2014

Спасибо за ответы, ребята.

Пока

<style>
<%@include file="styles.css"%>
</style>

в JSP ранее делал половину работы за меня, я столкнулся с проблемами с сопоставлением, не найденным для файла .jpg, указанного в CSS.

Добавление

<servlet-mapping>
    <servlet-name>default</servlet-name>
    <url-pattern>*.jpg</url-pattern>
</servlet-mapping>

решил остальную часть проблемы для меня. Хотя я все еще не получаю изображение BG на странице, остальная часть стиля, то есть цвета и шрифты, работают нормально. Глядя дальше, чтобы сделать визуальную привлекательность лучше.

person Sadique Khan    schedule 21.05.2014