SpringBoot构建的web项目,可以直接访问html这样的静态资源吗?大神举个例子
比如resource目录下有一个home.html文件,我可以在浏览器中直接来访问吗?
刚做了个实验,实验内容如下:
在resources文件夹下建立三个文件夹:
1、public
2、static
3、templates
实验结果一:
在public文件夹下的html文件可以通过浏览器中输入文件+后缀名的方式直接访问的。static和templates中不能直接访问。
实验结果二:
在配置了相应的视图解析器以后,templates中的文件可以通过控制器进行访问的。并且不同的视图解析器只能访问对应的视图。比如:thymeleaf视图解析器,只能访问.html的页面。velocity的解析器只能访问.vm的页面。
实验结论推测:
一、public文件夹,就相当于在eclipse的web项目中的web-inf文件夹外的文件,是不需要通过服务器内部进行访问的。
二、templates文件夹,是放置模板文件的,因此需要视图解析器来解析它。所以必须通过服务器内部进行访问,也就是要走控制器--服务--视图解析器这个流程才行。
三、static文件夹,既不能直接访问,也不能通过服务器访问到。因此,这个文件夹,可能是放一些css、图片这样的文件供服务器内部引用。
通常来说,不可以通过文件名.后缀的方式来直接访问web静态资源,至少目前我还没发现怎么这样来直接访问。
因此,我们通常是通过控制器的跳转来实现页面的访问。
通常页面会被放在templates、static、public这样的静态目录下。
我们跳转页面的时候,需要用到@Controlller注释,在方法中返回一个页面名称的字符串。
通常,要跳转html页面的话,我们在pom.xml加入thymeleaf的dependency。
SpringBoot就会为我们配置thymeleaf的ViewResolver来解析html后缀结尾的页面。
而如果,我们加入velocity这样的dependency,那么SpringBoot就会为我们自动配置velocity模板的ViewResover。
就可以解析以vm结尾的视图。
当然,这几种视图解析器是不能混用的比如velocity的视图解析器并不能解析html的页面。同样thymeleaf的视图
解析器也并不能解析html页面。