IT评测·应用市场-qidao123.com
标题:
404:源服务器未能找到目标资源的表示或者是不愿公开一个已经存在的资源表示
[打印本页]
作者:
冬雨财经
时间:
2024-6-13 19:41
标题:
404:源服务器未能找到目标资源的表示或者是不愿公开一个已经存在的资源表示
概述
本日把一个尘封已久的项目拿出来跑发现访问此中一个静态页面的时间显示如下错误:
先开始我想的是不是路径写错了,但是经过排查发现不是。然后查了一堆资料也没有解决。末了发现是静态资源映射的代码被我注释掉了,直接裂开:
接下来就说说这种问题的两种解决思路:
静态资源映射导致的问题
路径匹配不上导致的问题
静态资源映射问题
首先我们知道Tomcat在运行SpringMVC的web项目时,存在着以下几个步骤:
也就是根web上下文,MVC上下文,初始化DispatcherServlet,初始化Servlet的bean
我这里没有使用MVC上下文,直接使用的spring根上下文以是没有显示
而DispatcherServlet负责总的调治,我们一般会让Dispatcher拦截全部哀求:
@Override
protected String[] getServletMappings() {
return new String[]{"/"};
}
复制代码
也就是说这个时间全部的项目哀求都会被交给SpringMVC处置惩罚。但是我们如果要访问静态资源,同样也会被拦截。
以是这个时间我们要设置静态资源映射,让我们能顺遂访问。
代码如下:
@Configuration
public class SpringMVCSupport extends WebMvcConfigurationSupport {
@Override
protected void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("/pages/**").addResourceLocations("/pages/");
registry.addResourceHandler("/js/**").addResourceLocations("/js/");
registry.addResourceHandler("/plugins/**").addResourceLocations("/plugins/");
registry.addResourceHandler("/css/**").addResourceLocations("/css/");
}
}
复制代码
addResourceHandler添加访问路径
addResourceLocation添加映射后的真实路径
映射的真实路径末尾必须加/,不然映射不到适用于 windows和linux
路径匹配问题
有的时间大概是路径问题:
如果实在是弄不懂文件的路径,我们可以对照着文件夹写,例如我们找到项目编译之后的target文件夹在内里我们可以看到一个和项目同名的文件夹:
这个文件夹就是当前项目在tomcat或者其他服务器上运行时的文件夹布局,我们对照着写就可以了。
然后还要注意静态资源不能放在WEB-INF文件夹中。因为WEB-INF是Java的WEB应用的安全目录。所谓安全就是客户端无法访问,只有服务端可以访问的目录。
如果想在页面中直接访问此中的文件,必须通过 web.xml 文件对要访问的文件进行相应映射才能访问。
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
欢迎光临 IT评测·应用市场-qidao123.com (https://dis.qidao123.com/)
Powered by Discuz! X3.4