Maven+Eclipse+Tomcat+Spring MVC web 请求 404 问题总结及noHandlerFound

安装部署 Guacamole 远程桌面网关 Guacamole 是Apache基金会提供的一组基于web的远程桌面访问工具,支持 VNC、RDP、SSH、 Telnet 等协议,支持远程透传音视频。 阅读详情

    在Eclipse开发环境下基于Maven的Spring 4.3.18.RELEASE 版本开发一个web项目,并使用Tomcat发布,项目正常启动后,遇到一个请求报404,问题分析总结如下:

1.contextPath是否正确

    因为tomcat默认是以项目包的名字为contextPath的,而maven者是以artifactId为名字打一个war包,因此在默认情况下contextPath是"/artifactId"。因此默认情况下正常的访问路径应该是http://localhost:8080/artifactId/***(协议IP以及端口请以自己的为准)。但是有时候我们想让contextPath简洁一些,只是一个/就行,这时候我们需要进行一次配置,请参考博客https://blog.youkuaiyun.com/tony_java_2017/article/details/80742806

2.请求是否符合DispatcherServlet配置的servlet-mapping中的url-pattern

    使用Spring WEB MVC开发一个Java Web项目,DispatcherServlet作为一个前端控制器用来接收所有的请求,如果你的请求不能匹配到DispatcherServlet的servlet-mapping中的url-pattern,即使你的请求在Controller中写的是正确的,则依旧会报404。例如:

    <servlet>
		<servlet-name>springmvc</servlet-name>
		<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
		<init-param>
			<param-name>contextConfigLocation</param-name>
			<param-value>classpath:spring-mvc.xml</param-value>
		</init-param>
		<load-on-startup>1</load-on-startup>
	</servlet>
	<servlet-mapping>
		<servlet-name>springmvc</servlet-name>
		<url-pattern>*.form</url-pattern>
	</servlet-mapping>

spring-mvc.xml

<bean name="/info/hi" class="com.pactera.spring.controller.MyServlet"/>
<bean class="org.springframework.web.servlet.handler.SimpleServletHandlerAdapter"/> 

 MyServlet.java

public class MyServlet extends HttpServlet{

	@Override
	public void doGet(HttpServletRequest req, HttpServletResponse resp)
	{
		System.out.println("req....");
	}
}

你的请求是http://localhost:8080/artifactId/test/info则始终会报404,这种情况一般也许是你拷贝别人的配置文件,又没来得及修改导致的。

3.url拼写有错误

    此种错误较为好排查,不做分析了。

4.HandlerMapping配置错误

    HandlerMapping的作用就是帮助我们根据请求找到对应的处理器,假如找不到处理器就会报404错误。

    如上<bean name="/info/hi" class="com.pactera.spring.controller.MyServlet"/>的配置,是基于BeanNameUrlHandlerMapping找到处理器的,Spring MVC在应用上下文没有找到开发者自己配置的HandlerMapping时,会给将系统提供的两个默认的HandlerMapping加载到上下文中,/org/springframework/web/servlet/DispatcherServlet.properties文件中配置项

org.springframework.web.servlet.HandlerMapping=org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping,\
    org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping就是指定的默认HandlerMapping。

每一种处理器的实现必须和HandlerMapping的配置相适应,在找不到HandlerMapping时会报404错误。

org.springframework.web.servlet.DispatcherServlet.noHandlerFound(DispatcherServlet.java:1176): No mapping found for HTTP request with URI [/info/hi] in DispatcherServlet with name 'springmvc'  ,请看错误报出的源码:

DispatcherServlet中的noHandlerFound方法

/**
	 * No handler found -> set appropriate HTTP response status.
	 * @param request current HTTP request
	 * @param response current HTTP response
	 * @throws Exception if preparing the response failed
	 */
	protected void noHandlerFound(HttpServletRequest request, HttpServletResponse response) throws Exception {
		if (pageNotFoundLogger.isWarnEnabled()) {
			pageNotFoundLogger.warn("No mapping found for HTTP request with URI [" + getRequestUri(request) +
					"] in DispatcherServlet with name '" + getServletName() + "'");
		}
		if (this.throwExceptionIfNoHandlerFound) {
			throw new NoHandlerFoundException(request.getMethod(), getRequestUri(request),
					new ServletServerHttpRequest(request).getHeaders());
		}
		else {
			response.sendError(HttpServletResponse.SC_NOT_FOUND);
		}
	}

    关于HandlerMapping的使用与源码分析,请参考我的后续博客

    

carsim软件教学 第一步打开小锁(红色标注) 新手往往一看界面是灰的,界面内的各种模块打开不了,以为没激活成功 所有模块必须复制之后,进行编辑,不要直接进行修改(很重要) 2.空气动力学模型(红色标注) 这里面主要设定了簧上质量。整车的整备质量在下图模块中进行设定 空气动力学。主要涉及到空气阻力,在下面模块中进行设定,有个问题需要注意,他的空气阻力与汽车理论的空气阻力公式不一致,这一点需要注意 下面这会模块基本上用不到,涉及到一个声音和汽车的外观 下面这个模块主要涉及到发动机功率,传动比还有 tao,档位的传动比,发 阅读详情

相关推荐

RuoYi(分离版) 使用代码生成器添加子模块(idea版)

文章目录准备一、使用代码生成器1.数据库2.导入表并生成代码二、导入代码文件1.新建一个模块2.导入zip代码文件3.模块环境配置添加菜单和访问地址总结 准备 前提要把系统启动起来,部分教程可以参考这边文章若依框架RuoYi前后端分离项目导入IDEA及运行启动 但是完全参考这篇文章还是不能把项目启动起来,因为这篇文章没有说明数据库。 我是用的是本地数据库,采用xampp+Navicat的组合来部署和访问数据库。打开Navicat,连接并创建数据库ry-vue并导入数据脚本ry_20191008.sql,q

dream_coke的博客 1万+

springMVC出现404情况的解决方案

遇到404第一请看日志输出看有没有报错 1.如果错误提示是classNotFound,就是缺少依赖 2.如果提示cannot be cast to jakarta.servlet.Servlet,就是你tomcat版本和SpringMVC版本的问题

Yao220的博客 3899

RTX4090上跑CenterNet训练

参考实现 url=https://github.com/xingyizhou/CenterNet.git commit_id=5b1a490a52da57d3580e80b8bb4bbead9ef2af96

遗失的神庙 1622

Idea启动Tomcat后访问localhost:8080报404:DispatcherServlet noHandlerFound错误

将springmvc项目配置好,启动的时候,前台访问页面报404,后台出现一个警告: 后在网上查阅大量资料,并没有解决问题,困扰了我很长时间,后来重新创建一个项目并启动测试,访问成功,然后发现,原来是因为没有编译 class 导致,对比编译前后的out目录: 未编译: 编译后: 现将此问题可能出现的原因做一个整理,记录一下: 检查 web.xml 配置文件 检查 servlet-mapping 中的路径是否正确 <servlet-mapping> <servlet-name&g

很简单_的博客 1728

《python算法与数据结构2000讲》算法与数据结构总结

《python算法与数据结构2000讲》算法与数据结构总结

IT 甄选推荐 1103

使用MATLAB实现PAC2002轮胎模型的TIR文件解析和模型计算详解

PAC2002轮胎模型是由荷兰TNO公司开发的一种半经验的轮胎模型,用于描述轮胎在不同工况下的力学特性。该模型基于一系列物理和经验参数,通过复杂的数学表达式来模拟轮胎的力学行为,包括纵向力、侧向力、回正力矩等。

qq_38334677的博客 2429

No handler found for GET,No handler found for POST

NohandlerfoundforGET,NohandlerfoundforPOST

qq_44973310的博客 1万+

【数据集】2019年中国1km格网河网密度数据集

中国1km格网河网密度数据集

WW、forever的博客 1343

org.springframework.web.servlet.NoHandlerFoundException: No handler found for GET

org.springframework.web.servlet.NoHandlerFoundException: No handler found for GET 现在可以看到Java的后台爆这样的错误–其实代表前端发送请求过来了–并且访问到了这个服务器 后台服务器路径 http://localhost:8080 比如你要访问的是如下接口(后台真实路径) http://localhost:8080/test/listGoods 但是你现在前端不小心 打错了路径 和后台不匹配 http://localhost

末尾卡片和博主交流学习! 1万+

CAPL如何设置或修改CANoe TCP/IP协议栈的底层配置

MSS = MTU - tcpHeader - ipHeader,也就是MTU = MSS(1360) + tcpHeader(20) + ipHeader(20) = 1400,说明CAPL是可以动态设置网络底层配置参数的!然后在CAPL中设置此网卡MTU值为1400,然后创建UDP套接字,一次性发送2000个字节,在Trace窗口看看首帧报文二层Data的长度。所以我们还不能用UDP协议来验,应该用TCP协议来验,也就是在TCP三次握手时通过Tester的MSS值推导出自己的MTU值。

jasonj333 992

【DRAM存储器五十七】LPDDR5介绍--read DQ training和WCK DQ training

简述LPDDR5训练中的读写DQ训练

highman110的博客 521

浏览器发送查询请求报404,后台报出DispatcherServlet.noHandlerFound No mapping for GET xxx 的解决方案(IDEA)

SSM整合出现深坑BUG:浏览器发送 http://localhost:8080/team/list 请求查询所有,报这个错,所有网上的解决方案都看了一遍,所有所有项目细节都检查了N遍,搞了五六个小时,没搞出来,最后的最后自己整出来了,思路如下 DispatcherServlet.noHandlerFound No mapping for GET /team/list 顾名思义,请求走了DispatcherServlet,但是找不到请求映射方法。首先可以肯定的是,配置文件加载到了,那么spring.xml,

LJW123487的博客 3949

学Simulink——基于高渗透率可再生能源微电网的逆变器系统场景实例:含高比例逆变型电源的微电网暂态稳定性分析

本文详细介绍了基于MATLAB/Simulink的高渗透率可再生能源微电网建模方法,重点分析含高比例逆变型电源的微电网暂态稳定性问题。通过构建包含光伏、风电、逆变器和电网等模块的系统模型,展示了从项目创建、模块搭建到控制策略实现的完整过程。文章特别提供了逆变器PQ控制算法和故障处理逻辑的代码示例,并介绍了仿真参数设置与结果分析方法。该模型能有效评估微电网在故障条件下的动态响应特性,为优化逆变器控制策略提供依据,对现代智能电网研究具有重要意义。

xiaoheshang_123的博客 140

org.springframework.web.servlet.NoHandlerFoundException: No handler found for GET /favicon.ico

org.springframework.web.servlet.NoHandlerFoundException: No handler found for GET /favicon.ico 原因: 服务器经常有这个报错。 可能是Chrome谷歌浏览器,默认不访问在项目中配置的: <%-- 设置网页标题图标 --%> 解决方法: 方式一(全局修改):如果是tomcat服务器,可以在tomcat的/webapps/ROOT目录,放入自定义的favicon.ico文件。可能会被误删。 方式二(局部修

公z号:职场爱学习 6695

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

Eclipse maven项目服务器启动成功,但是访问404

Eclipse maven项目服务器启动成功,但是访问404 用eclipse启动显示成功了(如图),但是访问页面却404。 说明:server启动成功表示maven依赖ok,tomcat的相关配置成功 解决方案(仅供参考) 1、选中项目文件,单击右键,选择Properties,点击Deployment Assembly,配置Deploy Path。 说明:每个项目的配置不一样,据具体情况而定 ...

zcxbd的博客 4194

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

Maven下的Spring mvc项目中没有spring源码

我用的是eclipse的maven插件。首先,查看自己的maven配置有没有设置自动下载源码和JavaDoc,Window–>preferences–>Maven,有个Download Artifact Sources和Download Artifact JavaDoc,勾上之后Maven就会自动帮你下载源码和javaDoc啦。但是你会发现对于有些jar包来说还是没有源码,比如spring,这个可能

zhagzheguo的博客 5035

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

IDEA MAVEN创建SpringMVC项目+404问题

选择你的项目 去给你的tomcat配置 这是热部署的 然后就可以了

bozhu1的博客 377

解决404问题

404 girlfriend not found请联系管理员…… 404发自拍马赛克图以镇楼……开个玩笑,放松心情。今天来说软件的404问题。 作为程序员,谁没被404屠宰一遍又一遍?遇到这个问题先别慌,定定心,解决问题的时候一定不要烦躁。在404问题出来、出去之后,按照我总结的这个步骤一个一个来! 1 请求拦截器的404: (1) remove掉项目,很关键,然后clean……和clean tomcat work dir…… 第一步,项目启动起来之前 **(2)**手选一个编译位置、端口,很关键

miaozhicheng1990的博客 4869

get请求报404 NOT FOUND问题的原因及解决。

在一次学习中,实现类目选择展示规格参数时,编码完成自测发现没有效果。经排查原因,发现js中的请求URL与程序URL不一致,具体如下: @Controller @RequestMapping("/item/param") public class ItemParamController { @Autowired private ItemParamService itemParam...

sinat_24510245的博客 8万+

项目一直报404的各种原因及解决方法

项目一直报404的各种原因及解决方法 404找不到的路径或资源的情况会经常出现,那么怎么样排查才能快速解决问题呢? 1. 路径和文件名 项目报404,首先应该考虑路径和文件名的匹配问题,多半是文件放错位置(一般不会放错,毕竟都会放在对应的文件夹下,当然也有疏忽的时候),或者是文件名和我们请求的地址不匹配。所以先检查这两项。包括前端的JSP页面和HTML页面的请求URL地址,注意项目名要写成动态的获取 ${pageContext.request.contextPath} 2. 视图解析器(前提如果使用了的话)

RunningCodeMonkey的博客 1万+

bladeX 使用心得及错误记录

###bladeX的微服务中,添加后,总是报 No mapping for GET / 异常,No handler found for GET /错误 原因如下: 2021-10-22 08:08:47.230 WARN 5396 --- [ XNIO-1 task-14] o.s.web.servlet.PageNotFound : No mapping for GET / 2021-10-22 08:08:47.232 ERROR 5396 --- [ XNIO-1 t...

maimi的专栏 7679

PageNotFound.noHandlerFound No mapping found for HTTP request with URI

学习SpringMVC接收参数,不小心配置xml文件包名出错。浏览器访问出现以下报错, 后端提示: org.springframework.web.servlet.PageNotFound.noHandlerFound No mapping found for HTTP request with URI [/param/test] in DispatcherServlet with name 'springMVC' 可能的问题是没有扫描包 找到resourse目录下的xml配置文件(以上springMVC

qq_38864315的博客 2517

org.springframework.web.servlet.DispatcherServlet.noHandlerFound No mapping found for HTTP request

控制台报了这么个错:org.springframework.web.servlet.DispatcherServlet.noHandlerFound No mapping found for HTTP request with URI [/springmvc_response/js/jquery-2.1.0.min.js] in DispatcherServlet with name 'dispa...

weixin_43949154的博客 3812

警告: No mapping found for HTTP request with URI的解决方案

使用springMVC,访问action时报错: 2015-12-29 16:37:11 org.springframework.web.servlet.DispatcherServlet noHandlerFound 警告: No mapping found for HTTP request with URI [/springmvc/index.jsp] in DispatcherServl

zmm0420的专栏 6万+

No mapping found for HTTP request with URI [/user/login.do] in DispatcherServlet with name 'dispatch...

1、警告的相关信息 七月 24, 2017 3:53:04 下午 org.springframework.web.servlet.DispatcherServlet noHandlerFound警告: No mapping found for HTTP request with URI [/user/login.do] in DispatcherServlet with name 'dispat...

weixin_33985507的博客 644

【noHandlerFound(DispatcherServlet.java:1278)和No mapping for GET】SpringMVC 404和中文乱码问题和解决方案记录

org.springframework.web.servlet.DispatcherServlet.noHandlerFound(DispatcherServlet.java:1278) - No mapping for GET /my_springmvc/WEB-INF/templates/index.html.刚开始学习`springmvc`,却被`404`和`乱码`搞得晕头转向,为此还没学多少springmvc的其他知识,就开始调试它的源码查找问题了,还花了一天的时间,这里先记录一下。

MysticalDream的博客 4184
上一篇: 【设计模式】学习之创建型 原型模式
下一篇: 【设计模式】学习之结构型 适配器模式-装饰器模式-代理模式
tony_code_2017
博客等级 码龄9年 34粉丝 58原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值