在我使用springboot的时候,将程序运行但是没有办法利用localhost:8080 查看已经编写好的静态页面
但是当我们输入http://localhost:8080/pages/user/regist.html地址之后,不会出现我们所想出现的页面,反而出现了
Whitelabel Error Page
下面这个图是最开始我分的目录,注意看resources目录,我们下一步就会在这个地方进行改变
一、方式一
解决:
我们将已经有的static目录改名为code(代码的意思),然后最终如下图所示
我们再访问地址http://localhost:8080/pages/user/regist.html 便可以出现我们对应的页面
static目录是用来保存静态文件的目录, 比如JS, CSS样式, 图片等, 是不需要服务器进行数据绑定的页面.
此文件下都是静态资源文件,最主要的一个特点,可以通过浏览器地址栏,直接访问;
所以我们应该把静态页面放在static之下
二、方式二
目前不是前后端分离的形式,如果我们直接把前端资源放入到resource目录下,显然是不行的
对于引入的静态资源,建议我们放到static目录下面(方式一)或者是template目录下面
但是看我们的下图,我们既没有放到static目录下面,也没有放到template下面,这样就存在一个问题,默认情况下是访问不到前端的页面的
坚持要访问的话,就会出现下面的结果
那还有没有办法解决呢?
有! 我们可以通过配置类的方式设置静态资源的映射
也就是指定backend与front目录,告诉MVC框架这两个目录是我们放静态资源的,然后进行放行
@Slf4j //开启日志方便调试
@Configuration //注入容器
public class WebMvcConfig extends WebMvcConfigurationSupport {
/**
* 重写addResourceHandlers方法
* 设置静态资源映射
* 怎么个情况呢?
* 就是我们请求localhost:8080/backend/index.html时,就会帮我们映射到resource/backend/index.html文件下
*
* @param registry 使用它来设置映射哪些访问路径,对于这些路径映射到哪些资源文件
*/
@Override
protected void addResourceHandlers(ResourceHandlerRegistry registry) {
log.info("开始静态资源映射");
// 资源处理器:
// 下面这段代码是什么意思呢? ** 是通配符
// 如果访问的路径中有/backend/**,就回到resource目录下面的/backend/**去寻找
registry.addResourceHandler("/backend/**")
// classpath对应的就是resource目录
.addResourceLocations("classpath:/backend/");
registry.addResourceHandler("/front/**")
.addResourceLocations("classpath:/front/");
}
}
对拦截器不熟悉的同学可以看一下拦截器,网上的资料很多