关于springboot转发重定向以及受保护目录的一些规律

2022年12月7日09:57:59

今天闲来无事,又研究了一下springboot,涉及到了Thymeleaf模板引擎,因为之前接触过jsp,所以上手很快,但是也思考了一些关于转发以及重定向的问题,总结出以下规律

项目结构

关于springboot转发重定向以及受保护目录的一些规律

首先解释一下每个文件夹的作用,如果你是用的是idea创建的springboot项目,会在项目创建的一开始resources文件夹下自动创建static以及templates文件夹。也就是说项目初始时有java、resource、static以及templates 这几个文件夹。
一般static下存放js以及css样式文件,templates存放html页面。
以上是默认会创建的文件夹以及其作用
下面我们来说一下转发和重定向的规律。
首先static文件夹以及templates文件夹是受保护的,也就是说相当于你将文件放到了传统的ssh或ssm项目的WEB-INF下了。所以也就是说这两个文件夹下的文件是无法通过url直接访问的,以至于在springmvc下使用重定向会报404。

那么希望直接访问的html或者css该如何存放呢?

方式一
我们可以在resources下创建一个名为public的文件夹,顾名思义,放在此文件夹下的文件是共有的,可以直接通过url访问,当然也可以springmvc重定向访问啦。
方法二
在main下创建webapp文件夹,将文件放到此文件夹下,效果同上
注!文件夹名字是固定的,起别的名字还是会报404或者无效
好,说到这里,有的同学应该就会有疑问了,我分别创建了public和webapp而且还起了相同名字的html页面,我访问会进到哪一个?
首先:最好还是不要这么做,明明两个文件夹效果一样,又何必呢?看个人需求选择一种方式就好啦。
但是:事实结果告诉我们,被优先选择的是webapp下的文件,如图
关于springboot转发重定向以及受保护目录的一些规律

关于springmvc控制转发还是重定向的写法问题。

转发

/**
 * Created by beyondLi on 2017/6/2.
 */@ControllerpublicclassThymeleafController {@RequestMapping(value ="cs")public Stringcs(Model model) {return"index";
    }
}

转发是不需要手动加html的,此时springboot发现是转发,默认配置下他会自动去templates文件夹下找到对应的文件进行转发,如果return后写的是index.html会报404

重定向

@ControllerpublicclassThymeleafController {@RequestMapping(value ="cs")public Stringcs(Model model) {return"redirect:index.html";
    }

首先,添加redirect:这个毋庸置疑是mvc的语法问题,其次这里需要注意的是需要手动添加.html,否则会报404,而重定向则会自动去public文件夹下寻找。至于与webapp优先级别则同上述。

结论

以上为本人在研究springboot时所想到的问题以及找到的一些规律(默认配置下)。至于上述规律的一些原因如果有兴趣的同学可以研究一下,毕竟本人研究的还比较浅显,如果有什么错误,还望提出,共同学习。

  • 作者:beyondLi71
  • 原文链接:https://blog.csdn.net/liboyang71/article/details/72846527
    更新时间:2022年12月7日09:57:59 ,共 1347 字。