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

本文主要是介绍404:源服务器未能找到目标资源的表示或者是不愿公开一个已经存在的资源表示的问题解决思路,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章目录

  • 概述
  • 静态资源映射问题
  • 路径匹配问题

概述

今天把一个尘封已久的项目拿出来跑发现访问其中一个静态页面的时候显示如下错误:
在这里插入图片描述
先开始我想的是不是路径写错了,但是经过排查发现不是。然后查了一堆资料也没有解决。最后发现是静态资源映射的代码被我注释掉了,直接裂开:
在这里插入图片描述

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

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

静态资源映射问题

首先我们知道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/");}
}
  • addResourceHandler添加访问路径
  • addResourceLocation添加映射后的真实路径
  • 映射的真实路径末尾必须加/,不然映射不到适用于 windows和linux

路径匹配问题

有的时候可能是路径问题:

如果实在是弄不懂文件的路径,我们可以对照着文件夹写,例如我们找到项目编译之后的target文件夹在里面我们可以看到一个和项目同名的文件夹:
在这里插入图片描述
这个文件夹就是当前项目在tomcat或者其他服务器上运行时的文件夹结构,我们对照着写就可以了。

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

如果想在页面中直接访问其中的文件,必须通过 web.xml 文件对要访问的文件进行相应映射才能访问。

这篇关于404:源服务器未能找到目标资源的表示或者是不愿公开一个已经存在的资源表示的问题解决思路的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/644100

相关文章

IntelliJ IDEA 中配置 Spring MVC 环境的详细步骤及问题解决

《IntelliJIDEA中配置SpringMVC环境的详细步骤及问题解决》:本文主要介绍IntelliJIDEA中配置SpringMVC环境的详细步骤及问题解决,本文分步骤结合实例给大... 目录步骤 1:创建 Maven Web 项目步骤 2:添加 Spring MVC 依赖1、保存后执行2、将新的依赖

Spring 中的循环引用问题解决方法

《Spring中的循环引用问题解决方法》:本文主要介绍Spring中的循环引用问题解决方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录什么是循环引用?循环依赖三级缓存解决循环依赖二级缓存三级缓存本章来聊聊Spring 中的循环引用问题该如何解决。这里聊

Spring Boot中JSON数值溢出问题从报错到优雅解决办法

《SpringBoot中JSON数值溢出问题从报错到优雅解决办法》:本文主要介绍SpringBoot中JSON数值溢出问题从报错到优雅的解决办法,通过修改字段类型为Long、添加全局异常处理和... 目录一、问题背景:为什么我的接口突然报错了?二、为什么会发生这个错误?1. Java 数据类型的“容量”限制

Go语言开发实现查询IP信息的MCP服务器

《Go语言开发实现查询IP信息的MCP服务器》随着MCP的快速普及和广泛应用,MCP服务器也层出不穷,本文将详细介绍如何在Go语言中使用go-mcp库来开发一个查询IP信息的MCP... 目录前言mcp-ip-geo 服务器目录结构说明查询 IP 信息功能实现工具实现工具管理查询单个 IP 信息工具的实现服

关于MongoDB图片URL存储异常问题以及解决

《关于MongoDB图片URL存储异常问题以及解决》:本文主要介绍关于MongoDB图片URL存储异常问题以及解决方案,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录MongoDB图片URL存储异常问题项目场景问题描述原因分析解决方案预防措施js总结MongoDB图

SpringBoot项目中报错The field screenShot exceeds its maximum permitted size of 1048576 bytes.的问题及解决

《SpringBoot项目中报错ThefieldscreenShotexceedsitsmaximumpermittedsizeof1048576bytes.的问题及解决》这篇文章... 目录项目场景问题描述原因分析解决方案总结项目场景javascript提示:项目相关背景:项目场景:基于Spring

解决Maven项目idea找不到本地仓库jar包问题以及使用mvn install:install-file

《解决Maven项目idea找不到本地仓库jar包问题以及使用mvninstall:install-file》:本文主要介绍解决Maven项目idea找不到本地仓库jar包问题以及使用mvnin... 目录Maven项目idea找不到本地仓库jar包以及使用mvn install:install-file基

最详细安装 PostgreSQL方法及常见问题解决

《最详细安装PostgreSQL方法及常见问题解决》:本文主要介绍最详细安装PostgreSQL方法及常见问题解决,介绍了在Windows系统上安装PostgreSQL及Linux系统上安装Po... 目录一、在 Windows 系统上安装 PostgreSQL1. 下载 PostgreSQL 安装包2.

usb接口驱动异常问题常用解决方案

《usb接口驱动异常问题常用解决方案》当遇到USB接口驱动异常时,可以通过多种方法来解决,其中主要就包括重装USB控制器、禁用USB选择性暂停设置、更新或安装新的主板驱动等... usb接口驱动异常怎么办,USB接口驱动异常是常见问题,通常由驱动损坏、系统更新冲突、硬件故障或电源管理设置导致。以下是常用解决

Mysql如何解决死锁问题

《Mysql如何解决死锁问题》:本文主要介绍Mysql如何解决死锁问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录【一】mysql中锁分类和加锁情况【1】按锁的粒度分类全局锁表级锁行级锁【2】按锁的模式分类【二】加锁方式的影响因素【三】Mysql的死锁情况【1