zhujun_xiaoxin
zhu jun~
采纳率63.6%
2016-09-21 14:01 阅读 17.2k
已采纳

SpringBoot构建的web项目,可以直接访问html这样的静态资源吗?大神举个例子

5

比如resource目录下有一个home.html文件,我可以在浏览器中直接来访问吗?

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享

3条回答 默认 最新

  • 已采纳
    dabocaiqq dabocaiqq 2016-09-24 15:43
    点赞 1 评论 复制链接分享
  • zhujun_xiaoxin zhu jun~ 2016-09-27 02:10

    刚做了个实验,实验内容如下:
    在resources文件夹下建立三个文件夹:
    1、public
    2、static
    3、templates
    实验结果一:
    在public文件夹下的html文件可以通过浏览器中输入文件+后缀名的方式直接访问的。static和templates中不能直接访问。
    实验结果二:
    在配置了相应的视图解析器以后,templates中的文件可以通过控制器进行访问的。并且不同的视图解析器只能访问对应的视图。比如:thymeleaf视图解析器,只能访问.html的页面。velocity的解析器只能访问.vm的页面。
    实验结论推测:
    一、public文件夹,就相当于在eclipse的web项目中的web-inf文件夹外的文件,是不需要通过服务器内部进行访问的。
    二、templates文件夹,是放置模板文件的,因此需要视图解析器来解析它。所以必须通过服务器内部进行访问,也就是要走控制器--服务--视图解析器这个流程才行。
    三、static文件夹,既不能直接访问,也不能通过服务器访问到。因此,这个文件夹,可能是放一些css、图片这样的文件供服务器内部引用。

    点赞 6 评论 复制链接分享
  • zhujun_xiaoxin zhu jun~ 2016-09-26 07:26

    通常来说,不可以通过文件名.后缀的方式来直接访问web静态资源,至少目前我还没发现怎么这样来直接访问。
    因此,我们通常是通过控制器的跳转来实现页面的访问。
    通常页面会被放在templates、static、public这样的静态目录下。
    我们跳转页面的时候,需要用到@Controlller注释,在方法中返回一个页面名称的字符串。
    通常,要跳转html页面的话,我们在pom.xml加入thymeleaf的dependency。
    SpringBoot就会为我们配置thymeleaf的ViewResolver来解析html后缀结尾的页面。
    而如果,我们加入velocity这样的dependency,那么SpringBoot就会为我们自动配置velocity模板的ViewResover。
    就可以解析以vm结尾的视图。
    当然,这几种视图解析器是不能混用的比如velocity的视图解析器并不能解析html的页面。同样thymeleaf的视图
    解析器也并不能解析html页面。

    点赞 1 评论 复制链接分享

相关推荐