当前位置: 首页 > 知识库问答 >
问题:

Spring无法加载静态资源

陈昂熙
2023-03-14

我试图使用相对路径在jsp文件中加载静态资源,如css文件和javascript文件,但servlet映射似乎覆盖了对它们的映射。

项目结构:

webapp/
   assets/
      scripts/
         dashboard.js
      styles/
         common.css
   WEB-INF/
      views/
         pages/
            home/
               body.jsp

web.xml:

...
<servlet>
    <servlet-name>mvc-dispatcher</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <load-on-startup>1</load-on-startup>
</servlet>

<servlet-mapping>
    <servlet-name>mvc-dispatcher</servlet-name>
    <url-pattern>/</url-pattern>
</servlet-mapping>

<context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>/WEB-INF/mvc-dispatcher-servlet.xml</param-value>
</context-param>

<listener>
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>

...

mvc调度程序servlet。xml:

    <import resource="applicationContext.xml" />
<context:component-scan base-package="com.nickythorne.controller" />

<bean class="org.springframework.web.servlet.view.UrlBasedViewResolver">
    <property name="viewClass" value="org.springframework.web.servlet.view.tiles3.TilesView"/>
</bean>

<bean id="tilesConfigurer" class="org.springframework.web.servlet.view.tiles3.TilesConfigurer" >
    <property name="definitions" value="/WEB-INF/tiles-definitions.xml" />
</bean>

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

我尝试加载样式表的JSP文件:

<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>

<base href="${pageContext.request.scheme}://${pageContext.request.serverName}:${pageContext.request.serverPort}" />

<link rel="stylesheet" type="text/css" href="<c:url value='/assets/styles/common.css'/>" />

我得到的错误是:

警告组织。springframework。网状物servlet。PageNotFound:1108-在名为“mvc dispatcher”的DispatcherServlet中找不到URI为[/project/assets/styles/common.css]的HTTP请求的映射

共有1个答案

孟乐逸
2023-03-14

更好的方法是:

<c:set var="root" value="${pageContext.request.contextPath}"/>

<link rel="stylesheet" type="text/css" href="${root}/assets/styles/common.css"/>

无论端口、协议、域名等如何,都会将${root}解析为相对上下文路径。

 类似资料:
  • 我的问题很简单。我无法在Spring中加载静态资源,下面是我的配置文件。 dispatcher servlet。xml 网状物xml 我已将js和css文件放入/webapp/resources/css和/webapp/resources/js中。 我知道这个问题已经被解决了很多次,但我无法加载静态资源。我得到405浏览器上没有方法错误。 在网上尝试了所有其他解决方案。请告诉我哪里出了问题。对这些

  • 问题内容: 我得到了一个Spring MVC应用程序,该应用程序当前在目录中放置了一堆CSS和JS文件。 我通读了Spring Docs和一些有关如何使用ResourceHandlerRegistry类为模板加载这些文件的教程。我特别认为本教程中的代码段完全适合我的项目结构。 但是我的资源文件上总是显示404。 这是我当前正在使用的Application / Configuration类: 这是我

  • 4.1 原生koa2实现静态资源服务器 4.2 koa-static中间件

  • 我将SpringMVC与Thymleaf和spring安全一起使用。我想加载一个页面使用Thymleaf模板,我可以加载我的静态资源。 例如,我想从template.html加载位于:static/img/theme/logo.png中的图片 我得到的是:结果 template.html: mvcConfig.java WebSecurityConfig: 源代码树

  • 问题无法让Spring为静态资源添加资源处理程序。 背景信息我有一个Spring MVC webapp在独立的Jetty实例中运行。我的webapp结构是 我已经扩展了WebMVCConfigureAdaptor,添加了一个资源映射,这样URL就像公司一样。com/myservlet/resources/css/main。css将解析到webapp根目录/资源/css文件夹。 我的小控制器是这样的

  • 我试图提供一个静态资源(css文件)。 我已经注册了位置和处理程序 所以Tomcat的记录器显示到资源的正确映射 将URL路径[/resources/**]映射到类型为[类org.springframework.web.servlet.resource.ResourceHttpRequestHandler]的处理程序上 当浏览器呈现视图时,检查器显示404错误,试图获取静态资源。 应用初始化器。J