404:源服务器未能找到目标资源的表示或者是不愿公开一个已经存在的资源表示的问题解决思路

这篇具有很好参考价值的文章主要介绍了404:源服务器未能找到目标资源的表示或者是不愿公开一个已经存在的资源表示的问题解决思路。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

概述

今天把一个尘封已久的项目拿出来跑发现访问其中一个静态页面的时候显示如下错误:
404:源服务器未能找到目标资源的表示或者是不愿公开一个已经存在的资源表示的问题解决思路
先开始我想的是不是路径写错了,但是经过排查发现不是。然后查了一堆资料也没有解决。最后发现是静态资源映射的代码被我注释掉了,直接裂开:
404:源服务器未能找到目标资源的表示或者是不愿公开一个已经存在的资源表示的问题解决思路

接下来就说说这种问题的两种解决思路:

  • 静态资源映射导致的问题
  • 路径匹配不上导致的问题

静态资源映射问题

首先我们知道Tomcat在运行SpringMVC的web项目时,存在着以下几个步骤:
404:源服务器未能找到目标资源的表示或者是不愿公开一个已经存在的资源表示的问题解决思路
也就是根web上下文,MVC上下文,初始化DispatcherServlet,初始化Servlet的bean

我这里没有使用MVC上下文,直接使用的spring根上下文所以没有显示

而DispatcherServlet负责总的调度,我们一般会让Dispatcher拦截所有请求:

	@Override
    protected String[] getServletMappings() {
        return new String[]{"/"};
    }

也就是说这个时候所有的项目请求都会被交给SpringMVC处理。但是我们如果要访问静态资源,同样也会被拦截。
404:源服务器未能找到目标资源的表示或者是不愿公开一个已经存在的资源表示的问题解决思路

所以这个时候我们要配置静态资源映射,让我们能顺利访问。

代码如下:

@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文件夹在里面我们可以看到一个和项目同名的文件夹:
404:源服务器未能找到目标资源的表示或者是不愿公开一个已经存在的资源表示的问题解决思路
这个文件夹就是当前项目在tomcat或者其他服务器上运行时的文件夹结构,我们对照着写就可以了。

然后还要注意静态资源不能放在WEB-INF文件夹中。因为WEB-INF是Java的WEB应用的安全目录。所谓安全就是客户端无法访问,只有服务端可以访问的目录。

如果想在页面中直接访问其中的文件,必须通过 web.xml 文件对要访问的文件进行相应映射才能访问。文章来源地址https://www.toymoban.com/news/detail-456211.html

到了这里,关于404:源服务器未能找到目标资源的表示或者是不愿公开一个已经存在的资源表示的问题解决思路的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 如何解决使用若依前后端分离打包部署到服务器上后主包无法找到从包中的文件的问题?如何在 Java 代码中访问 jar 包中的资源文件?

    在使用若依前后端分离打包部署到服务器上后,可能会出现主包无法找到从包中的文件的问题,这个问题通常是由于资源文件没有正确地打包到 jar 包中导致的。本文将介绍如何解决这个问题,包括如何在 Java 代码中访问 jar 包中的资源文件、如何将资源文件复制到系统临时目

    2024年02月22日
    浏览(57)
  • 此URL不支持Http方法POST/GET描述 请求行中接收的方法由源服务器知道,但目标资源不支持

     出现这个错误,一般是你需要在自己的sevlet里面没有实现doget()/dopost()方法。  而, 如果你实现了doget()和dopost()方法。可以从前端获取数据,设置了响应页面,但是却没有响应。 就比如说:我输入表单信息之后,根据账号密码,经过数据库验证,响应不同的页面。

    2024年02月04日
    浏览(46)
  • 服务器出现404错误怎么处理

    很多站长使用虚拟主机或者云服务器做网站的以为这个就是空间商的问题,空间商主要服务虚拟主机的运维,跟404出现错误 并不完全直接关联的, 也是关于多方面的问题存在的, 现在由壹基比小鑫来给大家讲解下: 1.错误原因 HTTP 404 错误意味着链接指向的网页不存在,即原

    2024年04月11日
    浏览(39)
  • Mac Pro在重装系统时提示“未能与恢复服务器取得联系”

    检查网络连接 : 确保你的Mac Pro连接到稳定的网络。 尝试更换其他网络,例如切换到不同的Wi-Fi或使用有线连接。 系统时间校正 : 错误的系统时间有时会导致与恢复服务器的连接问题。 在恢复模式下打开终端(在实用工具菜单中选择终端)。 输入以下命令以校准时间:

    2024年02月08日
    浏览(48)
  • 什么是学生机云服务器,哪里可以找到学生机云服务器?

    云服务器学生机其实是各大厂商针对在校大学生推出的,比如腾讯云的云+校园活动,还有阿里云的飞天加速计划-开发者成长计划都是针对在校大学生的,下边就详细解说一下学生云服务器! 腾讯云推出的其实不仅仅是针对学生用户的,只要是25岁以下的都是免学生认证的直

    2024年02月13日
    浏览(79)
  • 服务器重启后宝塔界面打开显示404 nginx

    在阿里云服务器搭建宝塔界面,服务器重启之后打开宝塔显示404 not found nginx。 如果是IP+端口打开宝塔界面的方式的话,解决方法是输入完整的登录url进入宝塔登录界面。  尝试在终端中使用bt命令对宝塔面板进行重启  重启后再次打开宝塔外网访问的IP:端口仍然显示404 not

    2024年02月04日
    浏览(57)
  • VM High Sierra升级Sonoma 提示“未能与恢复服务器取得联系“解决方案

    在虚拟机App Store中升级最新Sonoma macos,提示\\\"未能与恢复服务器取得联系\\\"。在网上查了很多方法不顶用,比如修改时区、更新时间等。最后在知乎找到答案(第一个回答): MacBook Pro无法与恢复服务器取得联系? - 知乎 (zhihu.com) 具体解决方法: 开机进入恢复模式的 \\\"实用工具

    2024年02月04日
    浏览(279)
  • Vue项目nginx服务器部署刷新页面404错误

    最近想自己做点小项目练手,前端用的是vue框架,用nginx当做服务器来部署。但是当部署完成后,遇到了刷新页面和打开新页面报404错误的问题 问题就像上面描述的一样,刷新页面和打开新页面都是报404错误。 先说最终解决办法,在nginx的配置文件的location中改一下设置方式

    2024年02月17日
    浏览(57)
  • Vue项目打包到服务器后请求接口报错404

    背景 :前端Vue项目打包后部署在服务器上,而后端接口在另外一台服务器。本地生产环境运行时因为在Vue中配置了proxy代理,所以项目运行正常。但是在服务器开发环境中,一直报错404。 原因 :在开发环境中设置了proxy代理后,打包时proxy代理就会失效,因为proxy代理并不会

    2024年02月09日
    浏览(51)
  • vue项目本地开发完成后部署到服务器后报404

    前后端分离开发模式下,前后端是独立布署的,前端只需要将最后的构建物上传至目标服务器的 web 容器指定的静态目录下即可 我们知道 vue 项目在构建后,是生成一系列的静态文件 常规布署我们只需要将这个目录上传至目标服务器即可 让 web 容器跑起来,以 nginx 为例 配置

    2024年02月05日
    浏览(56)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包