2012-08-13 101 views
1

以下是我的MVC-dispatcher.xml文件Spring MVC的资源未映

<?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" 
xsi:schemaLocation="http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.1.xsd 
    http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd 
    http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.1.xsd"> 

<bean 
    class="org.springframework.web.servlet.view.InternalResourceViewResolver"> 
    <property name="prefix"> 
     <value>/view/</value> 
    </property> 
    <property name="suffix"> 
     <value>.jsp</value> 
    </property> 
</bean> 

<mvc:annotation-driven /> 
<mvc:resources location="/static/" mapping="/static/**" /> 
<context:component-scan base-package="in.codejava.personal.controllers" /> 
</beans> 

我要去哪里错了?所有的静态/ *网址正在被我创建的404控制器映射,而不是静态资源。

WEB.XML

<web-app xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" 
version="3.0"> 

<display-name>Personal Web Blogs</display-name> 
<servlet> 
    <servlet-name>mvc-dispatcher</servlet-name> 
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> 
</servlet> 
<!-- <servlet-mapping> --> 
<!--  <servlet-name>default</servlet-name> --> 
<!--  <url-pattern>/static/*</url-pattern> --> 
<!-- </servlet-mapping> --> 
<servlet-mapping> 
    <servlet-name>mvc-dispatcher</servlet-name> 
    <url-pattern>/</url-pattern> 
</servlet-mapping> 
</web-app> 

如果我删除注释部分,它工作正常。

+0

您可能需要包括更多的信息,以帮助调试web.xml文件中dispatcherservlet的相关条目,映射到相同路径的任何潜在控制器。另外,你能否详细说明你的404控制器是如何执行的。 – 2012-08-13 20:32:41

+0

@BijuKunjummen增加了Web.XML。 404控制器只是一个@ requestMapping,当没有映射匹配时执行。 – 2012-08-14 01:06:38

+0

这听起来很合理,对@Akhil而言,如果你删除了评论部分,那么你就说过了。在已注释的部分中,您正在注册另一个servlet映射权限 - 这是哪个servlet。 – 2012-08-14 02:04:46

回答

5

我要采取平底船和假设你使用的是传统的目录结构为您的JS,CSS,图片资源,就像这样:

  • src/main/webapp/[js|css|images]

在这种情况下,你mvc:resources应该是这样的:

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

,你应该引用它们在你的JSP是这样的:"${pageContext.request.contextPath}/static/js/foo.js"

+0

并不重要。检查WEB.XML和我的描述。 – 2012-08-14 01:07:19

+1

nickdos的回答指出了我在自己的资源映射问题中的正确解决方法。他的jsp contextPath参考是我所忽略的情况中的关键。首先检查基础知识,对吗?谢谢。 – 2013-02-02 01:27:01

0

我只是在我的web.xml <servlet-mapping> <servlet-name>default</servlet-name> <url-pattern>/resources/*</url-pattern> </servlet-mapping>

添加一个新的servlet映射,然后可以参考关于我的HTML资源的路径:

<link rel="stylesheet" href="resources/css/style.css" type="text/css" media="screen">