2011-12-20 36 views
10

Tôi đã tạo ứng dụng MVC.Spring MVC - bao gồm các tệp tĩnh/javascript, css

Tôi muốn đưa tệp js hoặc css vào jsp.

file tĩnh của tôi ar dưới:

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

Mã của tôi bao gồm jquery là:

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

và tôi không thể tải các js nộp vào xem.

tôi thấy các bản ghi với thông tin:

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

những gì có nghĩa, rằng MVC thử để lập bản đồ url đến file js.

Tôi nghĩ rằng có gì đó với cấu hình của tôi, nhưng tôi không biết gì.

web.xml của tôi là:

<?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

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

Trả lời

6

Thay đổi ánh xạ DispatcherServlet của bạn thành ví dụ:

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

Hoặc một số khác không xung đột url-pattern như *.htm hoặc /controllers/*. Hãy nhớ rằng từ bây giờ tất cả các bộ điều khiển của bạn sẽ chỉ có sẵn thông qua mẫu này.

Bây giờ nó đang chặn tất cả mọi thứ trong ứng dụng web của bạn, bao gồm .js tác phẩm, hình ảnh, vv

Các điều tương tự với hibernateFilter - bạn không thực sự cần một phiên Hibernate mở khi lấy .js file, không bạn?

+0

nhưng, khi tôi làm điều này, bản đồ thực sự của tôi bị phân tán. Sau khi thay đổi url của tôi: http: // localhost: 8080/pool/main không hoạt động – Ilkar

+0

Một chenge - tôi đã thêm một bản đồ servlet khác với * .js – Ilkar

19

thêm điều này vào bạn để giới thiệu và sửa đổi vị trí theo nhu cầu của bạn.

<mvc:resources mapping="/static/**" location="/WEB-INF/static/"/> 

thấy điều này How to handle static content in Spring MVC?

0

Sử dụng thẻ xuân JSTL để bao gồm các file kịch bản bên ngoài hoặc style sheets. Trước tiên, bạn nên bao gồm taglib trong JSP như sau.

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

Sau đó, bạn có thể bao gồm tập tin kịch bản extenal sử dụng,

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

Tôi đồng ý với câu trả lời của bạn. Nhưng trong tệp style.css, hãy khai báo url có liên quan đến đường dẫn của hình ảnh.

- kiểu.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; 
} 

Làm thế nào để sử dụng thẻ <spring:url></spring:url> trong file style.css để xem trong trình duyệt IE/Firefox

tập tin --jsp ---

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

Tại sao không sử dụng đơn giản jsp core?

<%@ 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

Giải pháp dễ dàng. +1 –

0

thêm MVC: nguồn lực trong tập tin cấu hình của bạn (* -servlet.xml), bạn có thể tìm thấy nó hoạt động

0

Tôi chỉ đi theo Mkyong Tutorial đặt css, js, jquery & tập tin hình ảnh. Nó làm việc cho tôi.

Trong 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/" /> 

Trong JSP, nhập khẩu thẻ thư viện

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

và thêm như

<link rel="stylesheet" href="<c:url value='/resources/css/custom.css'/>"> 
Các vấn đề liên quan