2011-01-24 61 views
8

Tôi bắt đầu thực hiện một ứng dụng web từ đầu. Trước khi tôi luôn làm việc trên các ứng dụng đã chạy trong một thời gian dài, vì vậy tôi không phải đối phó với giai đoạn thiết lập đầy đủ. Tôi đang sử dụng Spring 3 và Tomcat 6 và tôi đang sử dụng Eclipse 3.6Spring Tomcat và tài nguyên tĩnh và mvc: tài nguyên

Tôi gặp vấn đề lớn khi phân phát hình ảnh (hoặc những thứ khác với phản hồi của bộ điều khiển). Trong thực tế, tôi không thể tìm thấy một cách để có hình ảnh của tôi trong jsps của tôi. cấu hình của tôi, làm việc với:

<servlet-mapping> 
    <servlet-name>springDispatcher</servlet-name> 
    <url-pattern>/</url-pattern> 
</servlet-mapping> 

trong web.xml và

<bean name="/accise" class="it.jsoftware.jacciseweb.controllers.MainController"> 

</bean> 

cho bối cảnh servlet (cộng khác tất nhiên).

Tôi đã đọc nhiều thông điệp ở đây và các diễn đàn khác nói về điều này:

<mvc:resources mapping="/resources/**" location="/resources/" /> 

nhưng nếu tôi chèn rằng trong tôi servlet-context.xml, tôi sẽ có thể để phục vụ hình ảnh, tuy nhiên bộ điều khiển " accise "sẽ không thể truy cập được. Tôi có sử dụng sai hoặc tôi hiểu sai thẻ tài nguyên không? Cách chính xác là gì?


Giải pháp cập nhật tìm thấy !!! :)

Vấn đề là tôi servlet-config.xml bỏ lỡ một tuyên bố:

Bây giờ nó được (sử dụng chú thích trên bộ điều khiển):

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

<beans xmlns="http://www.springframework.org/schema/beans" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:mvc="http://www.springframework.org/schema/mvc" 
    xmlns:context="http://www.springframework.org/schema/context" 
    xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx" 
    xsi:schemaLocation="http://www.springframework.org/schema/beans 
     http://www.springframework.org/schema/beans/spring-beans-2.5.xsd 
     http://www.springframework.org/schema/aop 
     http://www.springframework.org/schema/aop/spring-aop-3.0.xsd 
     http://www.springframework.org/schema/tx 
     http://www.springframework.org/schema/tx/spring-tx-3.0.xsd 
     http://www.springframework.org/schema/context 
     http://www.springframework.org/schema/context/spring-context-3.0.xsd 
     http://www.springframework.org/schema/mvc 
     http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd"> 


    <context:component-scan base-package="it.jsoftware.jacciseweb.controllers"></context:component-scan> 
    <mvc:annotation-driven /> 

    <bean 
     class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping" /> 

<mvc:resources mapping="/resources/**" location="/resources/" /> 

Trả lời

7

<mvc:resources> lượt tốt với bộ điều khiển chú thích, nhưng có thể yêu cầu một số cấu hình bổ sung với các loại ánh xạ điều khiển khác.

Tôi đoán trong trường hợp của bạn, bạn cần phải khai báo BeanNameUrlHandlerMapping bằng tay (nó thường đăng ký theo mặc định, nhưng <mvc:resources> ghi đè giá trị mặc định như một tác dụng phụ của việc áp dụng cấu hình riêng):

<bean class = "org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping" /> 
+0

với hình ảnh này hoạt động nhưng mùa xuân không tìm thấy ánh xạ cho bộ điều khiển (mà nó tìm thấy không có thẻ tài nguyên). \t \t gotch4

+0

@ gotch4: Hiển thị 'MainController' của bạn. – axtavt

+0

Chúa Giêsu là một nỗi đau ... Điều này cần phải được đăng nhập như là một lỗi trong mùa xuân cho chắc chắn. – sourcedelica

1

tôi đã cùng một vấn đề . Tôi đã có thể khắc phục điều này bằng cách sử dụng đường dẫn đầy đủ như cho

CSS

<link rel="stylesheet" type="text/css" media="screen" href="/my-web-app/resources/css/smoothness/jquery-ui-1.8.21.custom.css"> 

và javascript

<script type="text/javascript" src="/my-web-app/static/js/jquery-1.4.4.min.js"></script? 

Hãy cho tôi biết nếu điều này giải quyết vấn đề của bạn trước khi mùa xuân đi kèm với một số tốt hơn tiếp cận.

0

Tôi cũng gặp vấn đề tương tự. Tôi đã giải quyết nó bằng cách thêm macro mùa xuân trước khi tham chiếu thực sự tới tài nguyên, để giải quyết đường dẫn servlet.

Nó không thực sự tốt đẹp trong mã, nhưng giải pháp này làm cho bạn độc lập với bối cảnh thực tế mà ứng dụng của bạn được triển khai trên máy chủ và servlet của bạn. Thông thường, bạn không muốn có servlet thực sự được đề cập trong url của bạn.

Ví dụ, đề cập đến câu trả lời của ColdStoneJava, đó sẽ là:

<script type="text/javascript" src="<@spring.url '/static/js/jquery-1.4.4.min.js'/>"></script> 

Bạn cũng phải tham khảo nó tuyệt đối trong url, do đó dấu gạch chéo '/ ...' là điều cần thiết.

này, sẽ không làm việc trong kinh nghiệm của tôi:

<script type="text/javascript" src="<@spring.url 'static/js/jquery-1.4.4.min.js'/>"></script> 

Cheers.

Các vấn đề liên quan