Spring Boot默认静态资源路径为src/main/resources/static,其中HTML/CSS/JS直接HTTP映射访问;templates目录用于Thymeleaf等模板文件,需@Controller返回视图名才能渲染。
Spring Boot 默认静态资源路径怎么配
Spring Boot 不会自动把
下的 HTML 当页面渲染,它只认特定目录里的静态文件。默认情况下,
和
是两个关键位置,但作用完全不同:
里放纯 HTML/CSS/JS(不经过模板引擎),直接 HTTP 映射;
里放 Thymeleaf、Freemarker 等模板文件,需要控制器跳转才能渲染。
放错目录最常见:把 HTML 扔进
或
根目录,结果 404
想用纯 HTML 不走模板?必须放
,且访问路径就是文件名,比如
→
如果用了 Thymeleaf,HTML 得放
,还得写一个
返回视图名,不能直接访问 .
html
路径
里改
可以自定义路径,但别轻易动,默认够用
为什么访问 HTML 返回白页或 404
不是代码写错了,大概率是“没走对路”——Spring Boot 的静态资源处理和 MVC 拦截机制在背后打架。
如果加了
,整个默认配置被清空,
目录失效,必须手动配
添加资源处理器
写了
却想返回 HTML?不行。必须用
,否则返回的是字符串字面量,不是页面
路径带
后缀但没配
(Thymeleaf 场景下不需要设这个)——其实 Thymeleaf 默认不依赖后缀,靠前缀+后缀拼路径,设了反而容易错
用 IDE 运行时没编译资源?检查 Maven 是否勾选了 “Build project automatically”,或者手动
Thymeleaf 页面怎么让变量生效
放进
目录只是第一步,HTML 里写
不会自动替换,得靠控制器传值 + 正确的命名空间声明。
HTML 文件第一行必须有
,否则
之类全被当普通属性忽略
控制器方法要返回 String(视图名),不是
或
,例如
对应
传参用
或
,不是
—— Spring Boot 里后者无效
Thymeleaf 默认禁用表达式缓存(开发模式),但如果你在
里加了
,改完 HTML 不重启就看不到效果
内嵌 CSS/JS 加载失败怎么办
静态资源路径写错是主因。Thymeleaf 页面里不能写
这种相对路径,浏览器会按当前 URL 拼,而不是按项目根目录。
使用HTML,CSS,JavaScript开发Android应用程序 英文文字pdf版附源文件
如果你了解HTML,CSS和JavaScript,您已经拥有所需的工具开发Android应用程序。本动手本书展示了如何使用这些开源web标准设计和建造,可适应任何Android设备的应用程序 - 无需使用Java。您将学习如何创建一个在您选择的平台的Android友好的网络应用程序,然后转换与自由PhoneGap框架到一个原生的Android应用程序。了解为什么设备无关的移动应用是未来的潮流,并开始构建应用程序,提供更
下载
立即学习
“
前端免费学习笔记(深入)
”;
Thymeleaf 推荐用
,它会自动补上下文路径(比如 /myapp/css/app.css)
纯静态 HTML 放
目录下,引用要用绝对路径
,开头斜杠不能少
如果用了 Spring Security,记得放开静态资源路径,比如
Chrome 控制台报 404 时,点开链接看实际请求地址——常会发现多了一层 context path 或少了一层
,根源还是路径生成逻辑没理清
最麻烦的不是配置,是分不清“静态资源直出”和“模板渲染”这两条路。同一个 HTML 文件,放错目录、用错控制器、写错引用方式,表现可能一模一样:空白页。盯住浏览器地址栏和 Network 面板里的真实请求路径,比翻文档更快定位问题。
src/main/javasrc/main/resources/staticsrc/main/resources/templatesstatictemplatessrc/main/javasrc/main/resourcesstaticstatic/index.htmlhttp://localhost:8080/index.htmltemplates@Controllerapplication.propertiesspring.web.resources.static-locations@EnableWebMvcstaticWebMvcConfigurer@RestController@Controller.htmlspring.mvc.view.suffix=.htmlmvn clean compiletemplates${xxx}xmlns:th="http://www.thymeleaf.org"th:textResponseEntity@ResponseBodyreturn "user";templates/user.htmlModelModelMapHttpServletRequest.setAttribute()application.propertiesspring.thymeleaf.cache=truehref="css/app.css"th:href="@{/css/app.css}"static/css/app.cssweb.ignoring().requestMatchers("/css/**", "/js/**", "/images/**")static