今天把一个尘封已久的项目拿出来跑发现访问其中一个静态页面的时候显示如下错误:
先开始我想的是不是路径写错了,但是经过排查发现不是。然后查了一堆资料也没有解决。最后发现是静态资源映射的代码被我注释掉了,直接裂开:
接下来就说说这种问题的两种解决思路:
首先我们知道Tomcat在运行SpringMVC的web项目时,存在着以下几个步骤:
也就是根web上下文,MVC上下文,初始化DispatcherServlet,初始化Servlet的bean
我这里没有使用MVC上下文,直接使用的spring根上下文所以没有显示
而DispatcherServlet负责总的调度,我们一般会让Dispatcher拦截所有请求:
@Overrideprotected String[] getServletMappings() {return new String[]{"/"};}
也就是说这个时候所有的项目请求都会被交给SpringMVC处理。但是我们如果要访问静态资源,同样也会被拦截。
所以这个时候我们要配置静态资源映射,让我们能顺利访问。
代码如下:
@Configuration
public class SpringMVCSupport extends WebMvcConfigurationSupport {@Overrideprotected void addResourceHandlers(ResourceHandlerRegistry registry) {registry.addResourceHandler("/pages/**").addResourceLocations("/pages/");registry.addResourceHandler("/js/**").addResourceLocations("/js/");registry.addResourceHandler("/plugins/**").addResourceLocations("/plugins/");registry.addResourceHandler("/css/**").addResourceLocations("/css/");}
}
/
,不然映射不到适用于 windows和linux有的时候可能是路径问题:
如果实在是弄不懂文件的路径,我们可以对照着文件夹写,例如我们找到项目编译之后的target文件夹在里面我们可以看到一个和项目同名的文件夹:
这个文件夹就是当前项目在tomcat或者其他服务器上运行时的文件夹结构,我们对照着写就可以了。
然后还要注意静态资源不能放在WEB-INF
文件夹中。因为WEB-INF是Java的WEB应用的安全目录。所谓安全就是客户端无法访问,只有服务端可以访问的目录。
如果想在页面中直接访问其中的文件,必须通过 l 文件对要访问的文件进行相应映射才能访问。
本文发布于:2024-01-30 05:41:16,感谢您对本站的认可!
本文链接:https://www.4u4v.net/it/170656447819626.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |