【问题标题】:Spring MVC doesn't load css, js files to static html pagesSpring MVC 不会将 css、js 文件加载到静态 html 页面
【发布时间】:2017-06-24 14:46:45
【问题描述】:

我禁用了 InternalViewResolver 的角色以访问一些静态页面,html 不是 jsp 页面,我进行了所需的更改,确实我做了,我可以访问我的 html 页面,但是当我看到浏览器的控制台时,它看起来好像没有带上我的本地 cssjs 文件。

这是我的项目结构。

这是我的首页

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8" />
    <title>ECommerce view example</title>
    <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.5.7/angular.min.js"></script>
    <link rel="stylesheet"
        href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css" />
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.0/jquery.min.js"></script>
    <script
        src="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/js/bootstrap.min.js"></script>
    <link rel="stylesheet" type="text/css" href="/static/css/style.css"/>
    <link rel="stylesheet" type="text/css" href="/static/css/login.css"/>
    <script src="http://maps.googleapis.com/maps/api/js?key=AIzaSyBR8P_sULnn-egsyhOb6qLYG2oqFshTiwY"></script>
</head>

mvc-config.xml

<?xml version="1.0" encoding="UTF-8"?>
    <beans:beans xmlns="http://www.springframework.org/schema/mvc"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xmlns:beans="http://www.springframework.org/schema/beans"
        xmlns:context="http://www.springframework.org/schema/context"
        xsi:schemaLocation="http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd
            http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
            http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">

        <annotation-driven></annotation-driven>
        <context:annotation-config></context:annotation-config>
        <context:component-scan base-package="ma.s2m.net"></context:component-scan>         
        <resources mapping="/static/**" location="/WEB-INF/static/"></resources>
    </beans:beans>

【问题讨论】:

    标签: java html angularjs spring-mvc


    【解决方案1】:

    刚刚注意到从 href 属性中删除 / 将解决此问题。

    请尝试更改

    <link rel="stylesheet" type="text/css" href="/static/css/login.css"/>
    

    <link rel="stylesheet" type="text/css" href="static/css/login.css"/>
    

    希望能帮到你。

    【讨论】:

      【解决方案2】:

      从浏览器控制台看来,您的路径无效。

      &lt;link rel="stylesheet" type="text/css" href="/static/css/style.css"/&gt;

      解析为网址: http://localhost:8080/static/css/style.css

      此处缺少 URL 中的上下文根。理想情况下,URL 应该是这样的。 http://localhost:8080/&lt;CONTEXT_ROOT&gt;/static/css/style.css

      在您的情况下,由于这是静态 html 页面,因此只需进行一次更正即可将 URI 与 webapp 目录匹配。

      entry.html 中进行以下更改即可。

      <link rel="stylesheet" type="text/css" href="../static/css/style.css"/> <link rel="stylesheet" type="text/css" href="../static/css/login.css"/>

      希望它能解决你的错误。

      【讨论】:

      • 它不起作用,我不知道它是如此模棱两可,我尝试了mvc-config .xmlentry.html css位置之间的所有可能组合。
      • 你能不能再把浏览器控制台快照粘贴到这里。
      • 这是更新 &lt;link rel="stylesheet" type="text/css" href="../css/style.css"/&gt;,这是控制台快照 http://localhost:8080/ssytem-ecommerce-prototype-view/css/style.css 404 not found
      • 你能试试这条线吗?如果可行,我将修改答案。 &lt;link rel="stylesheet" type="text/css" href="../static/css/style.css"/&gt;
      • http://localhost:8080/ssytem-ecommerce-prototype-view/css/login.css 404 not found,好像不认根路径
      【解决方案3】:

      我们一般把css,js放在resource文件夹里面,层级如下:

      webapp
        resource
          static
            css
              style.css
            js
              ...
        WEB-INF
          ...
      

      尝试使用上述层次结构。将资源映射更改为

      <resources mapping="/resources/**" location="/resources/static/"></resources>.
      

      【讨论】:

      • 它在整个页面上返回404 not found,而不仅仅是资源。
      【解决方案4】:

      你必须使用标签来解析你的静态 css & js。可以参考How to handle static content in Spring MVC?

      【讨论】:

      • 它不会改变任何东西。我想要一个没有助手的访问,什么都没有,没有 jstl,什么都没有。就像我们在 Spring Boot 应用程序中所做的一样。
      • 您的样式表链接将解析为 webapp/static/css/ 目录。由于该目录中不存在文件,因此您会收到 404 错误。如果您使用的是资源标签,那么您需要借助 JSTL 或 spring 标签。另一种选择是忽略资源标签并给出我们在静态 html 页面中给出的路径。为此,您的所有文件都应位于 webapp 目录下,因为 WEB-INF 文件夹下的文件是安全的,浏览器客户端无法直接访问。
      • 它没有用,我采用了第二个选项,我替换了 webapp 文件夹下的资源,这是链接
      • 尝试将静态文件夹的全部内容与 webapp 目录下的 entry.html 文件一起移动并使用
      • 还是没有,我照你说的做了
      猜你喜欢
      • 1970-01-01
      • 2018-01-14
      • 1970-01-01
      • 2017-11-06
      • 2017-01-14
      • 1970-01-01
      • 2017-10-08
      • 2017-05-06
      • 2017-07-23
      相关资源
      最近更新 更多