👉 博客主页:准Java全栈开发工程师
👉 00年出生,即将进入职场闯荡,目标赚钱,可能会有人觉得我格局小、觉得俗,但不得不承认这个世界已经不再是以一条线来分割的平面,而是围绕财富旋转的球面,成为有钱人不是为了去掌控球体的转向,而是当有人恶意掌控时,努力保护好家人和自己。
问题描述
- 在开发项目时,不免会用到一些如 CSS、HTML、JS 等静态资源,但是我们在配置 SpringMVC 的拦截路径时,设定的拦截路径为 “/” ,这也就意味着,我们输入地址访问静态资源时也会误认为在 Controller 层定义了相应的映射方法,但实际上我们并没有定义,只是在访问静态路径而已。
- 当访问静态资源时,报 404 错误,这是因为将 “/pages/books.html” 当作了映射路径,想从 Controller 包中找到匹配的映射方法。
解决方案
- 新建 SpringMvcSupport 类
@Configuration
public class SpringMvcSupport extends WebMvcConfigurationSupport {
@Override
protected void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("/pages/**").addResourceLocations("/pages/");
registry.addResourceHandler("/css/**").addResourceLocations("/css/");
registry.addResourceHandler("/js/**").addResourceLocations("/js/");
registry.addResourceHandler("/plugins/**").addResourceLocations("/plugins/");
}
}
- 该类继承 WebMvcConfigurationSupport 类,并重写 addResourceHandlers 方法,在方法体中编写放行静态资源的代码。
- 当请求路径中遇到如 “/pages/**” 时,不会去 Controller 层寻找映射方法,而是映射到 “/pages/” 静态文件下寻找资源。
- 因为是和表现层相关的配置类,所以需要在 SpringMvcConfig 配置类中加载该配置类,使其生效。
@Configuration
@ComponentScan({"qdxorigin.controller","qdxorigin.config"})
@EnableWebMvc
public class SpringMvcConfig {
}
- 我使用的是扫描包的方式,只要能让配置类生效,大家也可以选择其他方式。
- 此时,我们重启 tomcat 后,再次访问静态资源就可以成功访问了。
👉 以上就是文章的全部内容啦,诸佬如果有任何建议都可以提哦。
👉 创作不易,如果觉得对您有帮助的话,欢迎关注✨点赞👍收藏📂哦。