SpringBoot中实现配置Web静态资源路径的方法?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。
<强>正文:强>
准备工作:通过想法创建一个SpringBoot-web项目,此过程不做赘述,创建完成后项目结构如下图:
1 -创建一个控制器代码如下:
包com.example.webpractice.controller; 进口org.springframework.stereotype.Controller; 进口org.springframework.web.bind.annotation.RequestMapping; @ controller 公开课DemoController { @RequestMapping (“demo") 公共字符串演示(){ System.out.println(“进入控制器中演示的方法!“);/*注意:这里返回值有后缀名,如何省略后缀名后面有介绍*/返回“myPage.html"; } }
2 -在主要web-practice \ src \ \ templates \ \资源路径下创建html页面,取名“myPage”,代码如下:
& lt; !DOCTYPE html> & lt; html lang=癳n"祝辞 & lt; head> & lt;元charset=癠TF-8"祝辞 & lt; title> Title & lt;/head> & lt; body> & lt; h2>欢迎myPage ! & lt;/h2> & lt;/body> & lt;/html>
此时运行项目,会发现报404问题,同时查看想法控制台,打印显示进入控制器方法。
3 - spring.resources.static-location登场
打开application.yml文件,进行如下配置(默认项目中配置文件为应用程序。属性,修改后缀名即可,因我个人喜欢使用yml文件),重新运行项目并访问地址:localhost: 8080/演示会发现页面跳转成功。
春: 资源: static-locations:类路径:模板/
原因分析:spring.resources。静态定位参数指定了春天Boot-web项目中静态文件存放地址,该参数默认设置为:类路径:/静态类路径:/公共类路径:/资源类路径:/meta - inf/资源,servlet上下文:/,可以发现这些地址中并没有/模板这个地址。当配置文件中配置此项后,默认配置失效,使用自定义设置。这里涉及到两个概念:
(1)类路径:,通俗来讲类路径对应的项目中:主要web-practice \ src \ \资源文件目录。如:“类路径:模板/奔词墙试茨柯枷碌哪0逦募猩柚梦蔡募柯肌8钜徊浇怖嗦肪堵肪段?文件编译后在target/类目录下的文件。
(2)静态文件目录:通俗理解为存放包括:. html。jsp; CSS, js;图片;文本文件等类型文件的目录。这些文件都可以通过浏览器url进行访问。同时控制器中转发的文件目录也必须被设置为静态文件目录,这就是增加了该参数以后就可以正常访问的原因。
4 -, spring.mvc.view.prefix/后缀登场,
现在页面已经可以正常转发,我们有了新的想法,我希望在模板文件夹中创建一个html文件夹用于专门存放页面文件,另外在每次使用控制器进行转发是都要标明后缀名。html,这很麻烦,有没有统一处理的方案,答案当然是有!
修改后项目结构如下:
控制器方法修改如下:
包com.example.webpractice.controller; 进口org.springframework.stereotype.Controller; 进口org.springframework.web.bind.annotation.RequestMapping; @ controller 公开课DemoController { @RequestMapping (“demo") 公共字符串演示(){ System.out.println(“进入控制器中演示的方法!“);//如果不在appliation.yml文件中添加前后缀信息,此处返回语句为//返回“html/myPage.html" 返回“myPage"; } }
应用程序。yml文件修改如下:
春: 资源: static-locations:类路径:模板/mvc: 观点: 前缀:html/后缀:. html
,再次运行项目即可。通过测试得知前缀/后缀是在控制器返回语句前后添加前后缀信息。
5 -配置多个静态文件路径:当我们在页面中添加图片,并且将图片存放在资源/静态图片路径下,如下图所示: