2014-04-09 26 views
0

我正在使用spring MVC3.0。 web.xml中:爲CSS和設計相關的東西獲取HTTP 404錯誤

<?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/j2ee" xmlns:web="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd" id="WebApp_ID" version="2.4"> 
    <display-name>Spring MVC Form Handling</display-name> 

    <servlet> 
    <servlet-name>spring</servlet-name> 
     <servlet-class> 
      org.springframework.web.servlet.DispatcherServlet 
     </servlet-class> 
    <load-on-startup>1</load-on-startup> 
    </servlet> 
    <servlet-mapping> 
    <servlet-name>spring</servlet-name> 
    <url-pattern>*.do</url-pattern> 
     </servlet-mapping> 

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

    <welcome-file-list> 
    <welcome-file>index.jsp</welcome-file> 
    </welcome-file-list> 
    </web-app> 

注:我有兩個URL模式這就是爲什麼該應用程序的設計是打破和我正在 404錯誤CSS和圖像等...

彈簧的servlet。 xml:

<bean 
     class="org.springframework.web.servlet.view.InternalResourceViewResolver"> 
     <property name="prefix" value="/jsp/" /> 
     <property name="suffix" value=".jsp" /> 
    </bean> 
    <bean id="messageSource" 
     class="org.springframework.context.support.ReloadableResourceBundleMessageSource"> 
     <property name="basename" value="classpath:messages" /> 
     <property name="defaultEncoding" value="UTF-8" /> 
    </bean> 

    <bean id="localeChangeInterceptor" 
     class="org.springframework.web.servlet.i18n.LocaleChangeInterceptor"> 
     <property name="paramName" value="lang" /> 
    </bean> 

    <bean id="localeResolver" 
     class="org.springframework.web.servlet.i18n.CookieLocaleResolver"> 
     <property name="defaultLocale" value="en" /> 
    </bean> 

    <bean id="handlerMapping" 
     class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping"> 
     <property name="interceptors"> 
      <ref bean="localeChangeInterceptor" /> 
     </property> 
      </bean> 

所以我希望有resourse處理程序bean的問題如何做到這一點。

+1

指靜態資源爲什麼你需要兩個Spring servlets?有一些令人信服的理由嗎? – geoand

+0

請顯示'spring1' servlet的定義。 –

+1

我建議閱讀關於靜態資源處理的Spring文檔的章節:http://docs.spring.io/spring/docs/4.0.3.RELEASE/spring-framework-reference/htmlsingle/#mvc-config-static資源 – CodeChimp

回答

0

檢查你的日誌,你應該有一個例外,在線路:

java.lang.IllegalArgumentException: Servlet mapping specifies an unknown servlet name spring1... 

除非你錯過了與servlet的名字spring1另一個servlet,從web.xml中刪除以下行,並檢查:

<servlet-mapping> 
     <servlet-name>spring1</servlet-name> 
     <url-pattern>/</url-pattern> 
    </servlet-mapping> 
2

利用Spring功能,有效地提供靜態資產。爲了這個目的,你應該把下面的入口彈出上下文。

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

您必須將您的css,js和images文件放在webappRoot/resources文件夾中。還要刪除服務靜態資源的servlet映射。你的情況保持低於servlet映射並從web.xml中spring1的servlet,因爲它不與任何目標的servlet

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

在JSP映射,通過
<link rel="stylesheet" type="text/css" media="screen" href="<s:url value='/resources/css/styles.css'/>" /> <script src="<s:url value='/resources/js/jquery-1.8.3.js'/>" type="text/javascript"> </script>

+0

,我無法在spring-servlet.xml文件中添加標記。 – user3264841

+0

instated我可以使用標記.... – user3264841

+0

你在你的spring-servlet中導入了正確的名稱空間嗎?如果不使用: JToddler