【问题标题】:Can't get Tomcat to serve some static files while using Spring MVC使用 Spring MVC 时无法让 Tomcat 提供一些静态文件
【发布时间】:2014-09-17 13:29:36
【问题描述】:

我正在使用 Tomcat 7 并希望提供一个简单的登录屏幕,然后将用户引导到基于 Spring MVC / EXT-JS 的门户。在 web.xml 中,我定义了对 spring 区域的访问,如下所示:

<servlet>
    <servlet-name>portal-web</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <init-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>/WEB-INF/portal-web-servlet-app-ctx.xml</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
    <servlet-name>portal-web</servlet-name>
    <url-pattern>/portal/*</url-pattern>
</servlet-mapping>

这部分工作正常(到 /portal/* 的 URL 被正确定向)。但是,我的静态登录页面现在没有提供服务,并且 /index.html 和 /css/*.css 调用返回 404 错误。我尝试将以下内容添加到我的 web.xml:

<welcome-file-list>
    <welcome-file>index.html</welcome-file>
</welcome-file-list>

这确实让我可以访问 /index.html,但仍然无法访问 css 文件。

这是我的项目布局:

-src
    -main
        +extjs
        +java
        -resources
            hibernate.cfg.xml
            log4j2.xml
        -webapp
            -css
                first.css
                second.css
            +WEB-INF
            index.html

为什么tomcat不提供webapp/css下的静态文件?

谢谢!

【问题讨论】:

  • 尝试将所有静态内容放在资源文件夹下。如果没有解决,请尝试以下解决方案:stackoverflow.com/questions/1483063/…
  • 您也可以展示一下您的 Spring 配置吗?
  • 谢谢@BatScream - 我的资源文件夹被用于其他东西,因为它在 webapp 目录之外,它不会被访问。按照您发布的链接,我认为我可以使用第二个资源目录来解决问题。我会发布对我有用的东西。感谢您的帮助!
  • @amite,很好用。:-)

标签: spring spring-mvc tomcat extjs web.xml


【解决方案1】:

对我有用的是通过 spring xml 文件和 mvc:resources 标签控制到 spring mvc 的静态映射。

  1. 在 web.xml 中:

    <servlet>
        <servlet-name>portal-web</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>/WEB-INF/portal-web-servlet-app-ctx.xml</param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>portal-web</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>
    
  2. 在 portal-web-servlet-app-ctx.xml 我添加了以下内容:

    <mvc:resources mapping="/resources/**" location="/resources/" />
    
  3. 我的文件夹布局现在如下所示:

    -src
        -main
            +extjs
            +java
            -resources
                hibernate.cfg.xml
                log4j2.xml
            -webapp
                -resources
                    -css
                        first.css
                        second.css
                    index.html
                +WEB-INF
    

我还建议任何使用这些 xmls / 文件夹的人使用独立的 tomcat。我使用的是集成了 Eclipse 的 tomcat,并且我对 xml 文件/文件夹所做的很多次更改都没有反映出来。

【讨论】:

    猜你喜欢
    • 2016-08-25
    • 2013-06-02
    • 1970-01-01
    • 2017-02-21
    • 1970-01-01
    • 2016-10-14
    • 1970-01-01
    • 1970-01-01
    • 2016-10-13
    相关资源
    最近更新 更多