参考文章
默认
- 上面这几个都是静态资源的映射路径,优先级顺序为:META-INF/resources >resources/resources > static > public,在这四个目录中都写一个index.html,访问localhost:8080,会访问到META-INF/resource下的index.html,而如果该目录为空则会访问resource下的index.html,像这样依次去寻找资源来展示。
开发存放目录
- 一般来说,开发时会把不需要权限就可以访问的页面直接放在static下面,比如index.html等,还有css、js、images文件夹都会建在static下面。而需要权限限制的页面放在resources/templates下面,这个位置相当于WEB-INF,这些文件一般需要通过controller来进行跳转。
如果一定要把默认主页这种可以直接访问的页面都放在templates下的话,那可以配置个controller保证访问得到它(一般我们会顺便获取一些信息,比如文件列表或者评委名单之类,带回到页面显示):
@Controller @RequestMapping public class IndexController { @RequestMapping("/index.html") public ModelAndView index(){ ModelAndView modelAndView = new ModelAndView("index"); …… return modelAndView; } }
当然我们可以通过下面这种方法改变这种默认的配置
# 默认值为 /** spring.mvc.static-path-pattern= # 默认值为 classpath:/META-INF/resources/,classpath:/resources/,classpath:/static/,classpath:/public/ spring.resources.static-locations=这里设置要指向的路径,多个使用英文逗号隔开
- 或者还可以写个class继承自WebMvcConfigurerAdapter来指定方式访问页面,参见下面指定方式访问静态资源
自定义
- 上面主要是修改类似默认主页这样的静态资源的访问方式,如果现在我们在项目中放了一张图片,这不是springboot能管理得了的,那么我们应该如何访问它呢?
指定方式访问静态资源
这就是自己额外增加配置的情况,我们可以通过自定义资源映射来定义访问的方式,具体方法则是重写一个叫做addResourceHandlers方法。
@Configuration public class MyWebMvcConfigurerAdapter extends WebMvcConfigurerAdapter { /** * 配置静态访问资源 * @param registry */ @Override public void addResourceHandlers(ResourceHandlerRegistry registry) { registry.addResourceHandler("/my/**").addResourceLocations("classpath:/my/"); super.addResourceHandlers(registry); } }
- 通过addResourceHandler添加映射路径,然后通过addResourceLocations来指定路径。我们访问resources下自定义my文件夹中的elephant.jpg 图片的地址为 http://localhost:8080/my/elephant.jpg
如果你想指定外部的目录也很简单,直接addResourceLocations指定即可,代码如下:
@Override public void addResourceHandlers(ResourceHandlerRegistry registry) { registry.addResourceHandler("/my/**").addResourceLocations("file:E:/my/"); super.addResourceHandlers(registry); }
指定方式访问页面
在thymeleaf的默认路径resources/templates下找login页面
- 实现HandlerInterceptor接口
- 重写WebMvcConfigyurerAdapter的addInterceptors方法,将自定义的拦截器类添加进来
- 代码实例:SpringMvc02/interceptor/MyInterceptor、domain/MyWebMvcConfigurerAdapter、template/login.html、controller/LearnResourceController(功能:登录后访问学习资料页面,未登录直接访问学习资料页面则会直接跳转登录页面;这里有个小bug好像登录不上去,但拦截的功能是实现了的)
配置文件
存放目录
- 项目根目录下
- 项目根目录中config目录下
- 项目的resources目录下
- 项目resources目录中config目录下
读取顺序
- config/application.properties(项目根目录中config目录下)
- config/application.yml
- application.properties(项目根目录下)
- application.yml
- resources/config/application.properties(项目resources目录中config目录下)
- resources/config/application.yml
- resources/application.properties(项目的resources目录下)
- resources/application.yml