2011-12-20 11 views
10

Stworzyłem aplikację MVC.Spring MVC - dołącz statyczne pliki/javascript, css

Chcę dołączyć plik js lub css do jsp.

Moje pliki statyczne ar pod:

 
- webapp 
     -js/jquery.js 
     -WEB-INF| 
       | 
       - jsp/*.jsp 

mój kod obejmować jQuery jest:

<script type="text/javascript" src="<c:url value="js/jquery.js" />"></script> 

i nie mogę załadować pliku js do widzenia.

widzę dzienników z informacją:

WARN : org.springframework.web.servlet.PageNotFound - No mapping found for HTTP request with URI [/pool/js/jquery.js] in DispatcherServlet with name 'appServlet' 

co oznacza, że ​​MVC spróbować map URL do pliku js.

Myślę, że jest coś z moją konfiguracją, ale nie wiem co.

moim web.xml jest:

<?xml version="1.0" encoding="UTF-8"?> 

http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd ">

<!-- The definition of the Root Spring Container shared by all Servlets and Filters --> 
<context-param> 
    <param-name>contextConfigLocation</param-name> 
    <param-value>/WEB-INF/spring/root-context.xml</param-value> 
</context-param> 

<!-- Creates the Spring Container shared by all Servlets and Filters --> 
<listener> 
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> 
</listener> 

<!-- Processes application requests --> 
<servlet> 
    <servlet-name>appServlet</servlet-name> 
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> 
    <init-param> 
     <param-name>contextConfigLocation</param-name> 
     <param-value>/WEB-INF/spring/appServlet/servlet-context.xml</param-value> 
    </init-param> 
    <load-on-startup>1</load-on-startup> 
</servlet> 

<servlet-mapping> 
    <servlet-name>appServlet</servlet-name> 
    <url-pattern>/*</url-pattern> 
</servlet-mapping> 

    <filter> 
    <filter-name>hibernateFilter</filter-name> 
    <filter-class>org.springframework.orm.hibernate3.support.OpenSessionInViewFilter</filter-class> 
    </filter> 
    <filter-mapping> 
    <filter-name>hibernateFilter</filter-name> 
    <url-pattern>/*</url-pattern> 
    </filter-mapping> 

+0

Patrz: http://stackoverflow.com/questions/10495571/spring-not-finding-resource-files-css-jsp – ALOToverflow

Odpowiedz

6

Zmiana mapowania DispatcherServlet do np:

<servlet-mapping> 
    <servlet-name>appServlet</servlet-name> 
    <url-pattern>*.jsp</url-pattern> 
</servlet-mapping> 

Lub inne, nie będące w konflikcie, url-pattern, takie jak *.htm lub /controllers/*. Pamiętaj, że od teraz wszystkie kontrolery będą dostępne tylko dzięki temu wzorcowi.

Teraz jest przechwytywanie wszystko w aplikacji internetowej, w tym .js plików, zdjęć, itp

samo z hibernateFilter - tak naprawdę nie potrzebują otwartej sesji hibernacji podczas pobierania .js plików, nie ty?

+0

, ale kiedy to zrobię, moje aktualne mapowanie zostanie zniszczone. Po zmianie mój adres URL: http: // localhost: 8080/pool/main nie działa – Ilkar

+0

Jeden chenge - dodałem kolejne mapowanie serwletów z * .js – Ilkar

0

tagi, wiosna JSTL zawierać zewnętrzne pliki skryptu lub arkusze stylów. Najpierw należy dołączyć taglib do strony JSP w następujący sposób.

<%@ taglib uri="http://www.springframework.org/tags" prefix="spring"%> 

Następnie można dołączyć extenal skrypt stosując

<script type="text/javascript" src="<spring:url value="/js/jquery.js"/>"></script> 
0

zgadzam się z odpowiedzią. Ale w pliku style.css zadeklaruj adres URL, który odnosi się do ścieżki obrazu.

- styl.css--

.cwt-object0 
{ 
    display: block; 
    left: 2.62%; 
    margin-left: -1px; 
    position: absolute; 
    top: 43px; 
    width: 64px; 
    height: 64px; 
    background-image: url('/resources/images/object0.png'); 
    background-position: 0 0; 
    background-repeat: no-repeat; 
    z-index: 0; 
} 

Jak stosować tag <spring:url></spring:url> w pliku style.css, aby zobaczyć w przeglądarce IE/Firefox

--jsp plik ---

<link href="<spring:url value="/resources/style.css"/>" rel="stylesheet" type="text/css" media="screen"> 
2

Dlaczego nie używać prostych rdzeń jsp?

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>  
<link rel="stylesheet" type="text/css" href="<c:url value='/resources/css/bootstrap.css'/>" /> 
+0

Łatwe rozwiązanie. +1 –

0

dodać MVC: zasoby w pliku konfiguracyjnym (* -servlet.xml) można znaleźć to działa

0

Właśnie następuje Mkyong Tutorial umieścić CSS, JS, jQuery & plików graficznych. Działa dla mnie.

W servlet-context.xml

<!-- Handles HTTP GET requests for /resources/** by efficiently serving 
     up static resources in the ${webappRoot}/resources directory --> 
    <resources mapping="/resources/**" location="/resources/assets/" /> 

W JSP, import tag biblioteki

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> 

i dodać jak

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