2012-05-08 47 views
4

我使用一个jsp文件作为来自控制器的模型,我想使用CSS样式和js库春没有找到资源文件(CSS,JSP ...)

  • Proyect
    • 网络内容
    • 资产
    • WEB-INF
      • JSP

在web.xml:

<web-app version="2.5" 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_2_5.xsd"> 
<welcome-file-list> 
    <welcome-file>/WEB-INF/jsp/index.jsp</welcome-file> 
</welcome-file-list> 

<!-- Processes application requests --> 
<servlet> 
    <servlet-name>MyProject</servlet-name> 
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> 
    <init-param> 
     <param-name>contextConfigLocation</param-name> 
     <param-value>/WEB-INF/applicationContext.xml</param-value> 
    </init-param> 
    <load-on-startup>1</load-on-startup> 
</servlet> 
<servlet-mapping> 
    <servlet-name>MyProject</servlet-name> 
    <url-pattern>/</url-pattern> 
</servlet-mapping> 

</web-app> 

在applicationContext.xml中:

<context:annotation-config /> 
<context:component-scan base-package="main.mypack.controller" /> 



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

在我的JSP文件:HREF =“/资产/ CSS/jquery.mobile。 fixedToolbar.polyfill.css“

Noy工作,任何帮助吗?

编辑:我使用的是2.5 Spring版本,并且出现如下错误:在名为'MyProject'的DispatcherServlet中找不到URI的HTTP请求的映射[/MyProject/assets/js/jqm-project.js]

回答

13

问题是,你对CSS和JS文件的请求正在通过Dispatcher Servlet,这是不正确的。因此,Spring将无法找到那些不会加载它们的文件的映射。

您需要在applicationContext.xml文件中为您的应用程序添加resourceHandler,如下所示。该配置将绕过Dispatcher Servlet中对CSS和JS文件的请求。

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

希望这可以帮助你...干杯。

请把下面的代码在web.xml

<servlet-mapping> 
    <servlet-name>default</servlet-name> 
    <url-pattern>*.css</url-pattern> 
</servlet-mapping> 

<servlet-mapping> 
    <servlet-name>default</servlet-name> 
    <url-pattern>*.js</url-pattern> 
</servlet-mapping> 
+0

谢谢,它适用于女巫弹簧3.X,但我使用2.5,该版本的任何解决方案? – Marta

+0

默认映射不起作用... :-( 我发布了我的解决方案 – Marta

2

自动解决:

这种映射阻挡的一切,我改变了:

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

对于这个(我改变我的电话“call.do”):

<servlet-mapping> 
     <servlet-name>MyProject</servlet-name> 
     <url-pattern>*.do</url-pattern> 
    </servlet-mapping> 

它的工作原理!

+0

总是建议不要在使用任何框架(如struts或spring)时使用/ as url映射始终尝试使用url作为* .do或* .htm以避免不必要的阻塞 – dharam