springboot html调用js无效400问题及解决
作者:子非鱼yy 发布时间:2023-06-24 02:11:54
springboot html调用js无效400
html板在templates下面,js文件在static下面,在模板中引用时不需要加static这个路径。
例如
src
└─main
├─java
└─resources
├─static
│ ├─css
│ ├─img
│ └─js
│ └─test.js
└─templates
在模板中引用test.js, 你引用的地址应当为/js/test.js,换成thymeleaf的属性则应当为th:src="@{/js/test.js}",其中的绝对地址可以换成相对地址。
无法访问css,js,图片等静态资源的三种方案
今天在写一个Spring Boot项目的时候发现了一个问题,无法访问static目录下的文件夹里面的静态资源,如css, js和图片 ,在网站中也没有找到这些静态文件的地址。在网上找了好几种解决方法也没有用。但是我之前使用Spring Boot的时候并没有出现这个问题。
所以我找出了以前写的项目,对比了一下,终于发现了问题:
以前的项目我是把所有的静态文件全都放在了static这个文件下,于是直接访问了。但是现在我在static文件夹下又多分了几个文件夹,结构如下图:
第一种解决方法
发现了不同之后,我尝试了将这个css文件直接放在static最外面,然后更改文件的引用地址为
<link rel="stylesheet" href="me.css" rel="external nofollow" >
发现果然可以正常的访问到了。
第二种解决方法
但是这种方法并不是我想要的,不过发现了问题之后就好办了。我找到了另一种解决方法,可以保持这个文件系统结构:
在application.properties这个配置文件中添加:spring.mvc.static-path-pattern=/static/**
如果你的配置文件是application.yml文件则添加
spring:
mvc:
static-path-pattern: /static/**
添加之后recompile一下,果然可以在子文件夹中访问了,引用的格式是:
<link rel="stylesheet" href="../static/css/me.css" rel="external nofollow" rel="external nofollow" >
第三种解决方法
因为我使用的是thymeleaf这个模版,所以可以直接使用Thymeleaf的引入文件的方式,如下:
<link rel="stylesheet" href="../static/css/me.css" rel="external nofollow" rel="external nofollow" th:href="@{/css/me.css}" rel="external nofollow" >
这样,即使不在application.properties文件中配置,也可以引用到所需要的文件。
原因
为什么会出现这个问题呢?
因为Spring Boot的默认扫描路径是/static,并没有包含static这个文件夹之中的文件夹里面的文件,所以如果把文件放在/static/css/me.css这种位置就无法被识别出来。
而方法一和方法二的这段代码的作用就是将/static文件夹下面的所有文件夹和以及相应的子文件夹都添加到扫描路径中去,于是就可以正常的使用了。
来源:https://zhaoshuxiang.blog.csdn.net/article/details/78040573


猜你喜欢
- 前言目前正在练手springboot+vue,因为很多步骤会遇到困难,当时查完资料解决,过一段时间就会忘记,所以决定建个系列记录下来。因为中
- 本文实例讲述了Android实现将一个Activity设置成窗口样式的方法。分享给大家供大家参考,具体如下:1.在res/value文件夹下
- 堆区:只存放类对象,线程共享;方法区:又叫静态存储区,存放class文件和静态数据,线程共享;栈区:存放方法局部变量,基本类型变量区、执行环
- springboot微服务内置了tomcat,在工程目录下执行:mvn clean package,可以将项目打成jar,通过java -j
- Java排序 - DualPivotQuicksort这里描述 leftmost = true 的情况,也就是会从数组的开始一直排序到数组的
- Android系统里面有四种类型的菜单:options menu(选项菜单),context menu(上下文菜单),sub m
- IO感觉上和多线程并没有多大关系,但是NIO改变了线程在应用层面使用的方式,也解决了一些实际的困难。而AIO是异步IO和前面的系列也有点关系
- 目录1 起因2 解决方案2.1 在pom中引入2.2 Spring Boot 打包处理2.3 拓展: Spring Boot 打包加入其它资
- 本文实例为大家分享了java实现文件上传下载的具体代码,供大家参考,具体内容如下1.上传单个文件Controller控制层import ja
- 参考ColorComboBox做修改,并对颜色名做些修正,用于CR MVMixer产品中,聊作备忘~效果图:代码://颜色拾取框using
- 疑问,确实像往常一样在service上添加了注解 @Transactional,为什么查询数据库时还是发现有数据不一致的情况,想想肯定是事务
- 1. 为什么使用线程池诸如 Web 服务器、数据库服务器、文件服务器或邮件服务器之类的许多服务器应用程序都面向处理来自某些远程来源的大量短小
- @CacheEvict无法解决分页缓存清除当下比较热门的spring缓存就是encache,但是最近在写毕业设计的时候,发现了在缓存分页的时
- 公司的服务器需要实时监控,而且当用户空间已经满了,操作失败,或者出现程序Exception的时候就需要实时提醒,便于网管和程序员调式,这样就
- 情景描述将一个时间转换为对应的unix时间戳,字符集使用UTF-8编码,数据通讯统一采用 HTTP 协议通讯,使用POST 方法请求并传递参
- 本文实例讲述了Java8新增的重复注解功能。分享给大家供大家参考,具体如下:一 点睛在Java 8以前,同一个程序元素前最多只能使用一个相同
- private void showPopupView() { if (mPopupWindow ==
- 在Android开发中,通过以下三种方法定时执行任务:一、采用Handler与线程的sleep(long)方法(不建议使用,java的实现方
- 在上一章中,有个问题可能大家都没有注意,Acitivity 在使用startActivityForResult后,可以给另一个的Acitiv
- 因为线程重用导致的信息错乱的bugThreadLocal一般用于线程间的数据隔离,通过将数据缓存在ThreadLocal中,可以极大的提升性