【问题标题】:CSS file is not getting mapped/loaded in SPRING MVC program in eclipseCSS 文件未在 Eclipse 的 SPRING MVC 程序中映射/加载
【发布时间】:2018-05-09 21:08:02
【问题描述】:

我对 Spring mvc 非常陌生,对于这个问题,我在这里找到了很多答案,但没有什么对我有用,请帮助我找出我在这里犯了什么错误。 我在 WebContent>WEB-INF>resources>css>style.css 下创建了一个 css 文件,映射在 spring-servelet.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"
    xmlns:mvc="http://www.springframework.org/schema/mvc"
    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">

    <!-- DispatcherServlet Context: defines this servlet's request-processing 
        infrastructure -->

    <!-- Enables the Spring MVC @Controller programming model -->
    <annotation-driven />
    <context:component-scan base-package="com.journaldev.spring" />

    <!-- Resolves views selected for rendering by @Controllers to .jsp resources 
        in the /WEB-INF/views directory -->
    <beans:bean
        class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <beans:property name="prefix" value="/WEB-INF/views/" />
        <beans:property name="suffix" value=".jsp" />
    </beans:bean>

    <!-- Handles HTTP GET requests by efficiently serving up static resources 
         in the corresponding directory -->
    <mvc:annotation-driven />
    <mvc:default-servlet-handler />
    <mvc:resources mapping="resources/**" location="resources/" cache-period="31556926"/>

</beans:beans>

我已经从 jsp 调用了 css 文件,而 jsp 文件是

   <%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>  
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %> 
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>welcome</title>
<!-- Custom Theme files -->
<link href="<spring:url value='resources/css/style.css' />" rel="stylesheet" type="text/css" media="all" />
</head>
<body>
<h1>Hello world!</h1>

    <P>The time on the server is ${serverTime}.</p>


</body>
</html>

现在网络已中止错误正在控制台上显示。正如我所说我是这个框架的新手,所以请帮助我而不是给出答案的链接,因为我已经尝试了几乎所有。谢谢

【问题讨论】:

  • 你试过/css/style.css(之前是一个斜线)吗?如果您尝试过单击 cntrl+U 查看源代码并单击 css 链接。正在加载吗?
  • 是的兄弟,它还没有加载css,当我点击页面源中的链接时,它的显示如下,
  • 如果您仍然无法解决此问题,请尝试直接提供路径而不是使用 spring:url 标签`
  • 我已经尝试过了,但它不起作用......老兄我会用完整的代码更新我的问题,请看看......

标签: java css spring eclipse model-view-controller


【解决方案1】:

将您的CSS 文件夹放入webcontent 并添加以下代码servlet xml 文件

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

现在您可以使用以下代码从 views 文件夹中的 JSP 获取 CSS -

<link href="/css/yourCSS.css" rel="stylesheet" type="text/css" media="all" />

这应该可以,否则让我们知道!

【讨论】:

  • 尚未解决,检查时控制台显示的错误是 GET localhost:8080/css/style.css net::ERR_ABORTED ,该路径是否正确?
  • 这没有你的项目名称,如 localhost:8080/myproject/css/style.css 还是你部署为 ROOT ?
  • 老兄,我们现在加载了 css 文件,我已经将 jsp 的引用更新为 ,更新你的答案。
  • @SumithChalil 很高兴知道这一点:) 继续
【解决方案2】:

所以,你需要按照 vipin cp 的建议去做。你需要这个:

<link href="<spring:url value='/css/style.css' />" rel="stylesheet" type="text/css" media="all" />

这是因为您正在使用映射 mapping="/css/**" ,因此您的值需要以与映射"/css/..." 相同的开头,没有斜线开头,它与您的映射不匹配,所以 spring 不也知道在哪里映射它,您也可以将映射更改为mapping="css/**"。无论您选择哪个,它们只需要相互匹配即可。

一旦它们匹配,Spring 就可以将您的 url 解析为它们需要的内容。

另外,只是对可读性的建议。使用var 参数在顶部指定所有spring:url 元素,然后您可以使用标准SpEl 引用它。

例如:

<spring:url value='/css/style.css' var='styleCss'/>

所以,这告诉 Spring styleCss 变量引用了来自 /css/style.css 的解析 url。然后,您可以像这样引用该变量:

<link href="${styleCss}" rel="stylesheet" type="text/css" media="all" />

显然,这取决于你,但我一直觉得它更具可读性。

对于它的价值,这也可以通过你的 JS 导入来完成,如果你有的话。

【讨论】:

  • 感谢您的回复,正如你们都告诉我之前尝试过使用 / ,但它尚未加载文件,因为我回复 vipin 这就是我从页面源打开该链接时得到的.还有什么要配置的,比如网络可访问性或权限???
  • 除非您使用 Spring 安全性,否则您不应该需要太多。您遇到的问题似乎是 Spring 没有解析您的 URL,而是对其进行了 HTML 编码。您可能还需要在您的位置添加尾随 /。所以位置="/resources/css/"。除此之外,如果您使用基于约定的配置,那么一切都应该有效。如果您不导入标签库,则可能需要这样做。在您的网页顶部包含 springframework.org/tags" %>。
  • 兄弟,如果 value='/css/style.css' 并且映射和位置是 mapping="/css/**" location="/resources" 参考会发生什么?位置如何是在值字段中添加还是替换?
猜你喜欢
  • 1970-01-01
  • 2016-01-30
  • 2014-09-18
  • 1970-01-01
  • 2016-04-29
  • 2019-02-10
  • 2015-06-06
  • 2017-03-08
  • 2016-02-03
相关资源
最近更新 更多