首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

noHandlerFound并在spring mvc中显示404时没有消息。

noHandlerFound是Spring MVC框架中的一个异常,表示找不到对应的请求处理器(Handler)。当请求的URL与已注册的请求映射(RequestMapping)不匹配时,就会抛出该异常。

在Spring MVC中显示404时没有消息,可能是因为没有为该异常配置自定义的错误处理器(HandlerExceptionResolver)。可以通过以下步骤来解决该问题:

  1. 创建一个实现了HandlerExceptionResolver接口的类,用于处理异常。可以继承AbstractHandlerExceptionResolver类来简化实现。
  2. 在该类中重写doResolveException方法,根据异常类型进行处理。对于noHandlerFound异常,可以返回一个自定义的错误消息或者一个自定义的错误页面。
  3. 在Spring MVC配置文件中,将该异常处理器配置为全局异常处理器。可以通过<mvc:annotation-driven>标签的exception-resolvers属性或者使用@Bean注解来配置。

以下是一个示例的代码:

代码语言:java
复制
import org.springframework.web.servlet.HandlerExceptionResolver;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.handler.AbstractHandlerExceptionResolver;
import org.springframework.web.servlet.mvc.support.DefaultHandlerExceptionResolver;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class CustomHandlerExceptionResolver extends AbstractHandlerExceptionResolver {

    @Override
    protected ModelAndView doResolveException(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) {
        if (ex instanceof NoHandlerFoundException) {
            // 处理noHandlerFound异常
            ModelAndView modelAndView = new ModelAndView();
            modelAndView.setViewName("error404"); // 设置自定义的错误页面
            return modelAndView;
        }
        // 其他异常交给默认的处理器处理
        return super.doResolveException(request, response, handler, ex);
    }
}

在Spring MVC配置文件中添加以下配置:

代码语言:xml
复制
<mvc:annotation-driven>
    <mvc:exception-resolvers>
        <bean class="com.example.CustomHandlerExceptionResolver" />
    </mvc:exception-resolvers>
</mvc:annotation-driven>

这样,当出现noHandlerFound异常时,就会显示自定义的错误页面或者错误消息。

注意:以上示例中的代码只是一个简单的示例,实际项目中可能需要根据具体需求进行适当的修改和扩展。

关于Spring MVC的异常处理和配置,可以参考腾讯云的产品文档:Spring MVC 异常处理

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

你有没有掉进去过这些Spring MVC的“陷阱“(上)

一、自定义返回HTTP状态码   当浏览器输入一个URL地址时,浏览器会向服务器发出请求,在浏览器接收和显示响应内容之前,服务器会返回一个包含HTTP状态码的响应头,响应浏览器的请求...MVC的程序时并没有定义响应的状态码,这是因为Spring MVC已经在框架定义好了这些响应码,不需要在编写业务代码时再去定义响应码,当然Spring MVC也支持自定义状态码 需要自定义返回状态码的场景有以下几种...针对不容的错误类型发送特定的错误码 客户端的定制化需求 Spring MVC自定义返回状态码的方式有以下几种: 使用ResponseEntity表示状态码、头部信息、响应体 Controller类或者异常类上使用...-- lookup parent from repository --> com.citi spring-mvc-traps...增加http请求 ### GET http://localhost:8080/tesla/first Accept: application/json 启动该服务,点击spring_mvc_traps.http

82810

你有没有掉进去过这些Spring MVC的“陷阱“(下)

一、Spring MVC过滤器和拦截器 过滤器Filter 过滤器Filter是Web应用程序的组件,他可以在请求到达Servlet容器之前对请求进行拦截,也可以在响应信息返回到客户端之前进行拦截...registry.addInterceptor(new LogInterceptor()).addPathPatterns("/**").order(0); } } 启动应用并清空控制台的日志,执行spring_mvc_traps_date_transfer.http...规范不同:过滤器是Servlet规范定义的,是Servlet所支持的,拦截器是Spring容器定义的,是Spring Framework支持的 使用的资源不同:拦截器是Spring容器的的Bean...,是由Spring容器所管理的,过滤器是Servlet规范定义的,不是Spring所管理的 深度不同:过滤器只在request到Servlet容器前后进行操作,拦截器可以深入到方法前后以及异常抛出前后,...总结:Spring项目中,几乎所有过滤器能实现的功能,拦截器都能实现,当然过滤器能实现的拦截器也能实现,但是建议优先考虑使用拦截器,可以被Spring所管理,可以更好的应用Spring容器。

33420

ideaservlet访问不到_javaweb创建servlet

交个朋友,你要的都在这_AProMonkey的博客-CSDN博客 今天遇到一个比较新奇的问题,但是也应该是使用spring MVC框架时由于疏忽经常会遇到的一个,解决后写出来和大家分享分享。...浏览器控制台报错信息: idea后台报错信息: 二月 07, 2017 11:27:35 上午 org.springframework.web.servlet.PageNotFound noHandlerFound...' 二月 07, 2017 11:27:35 上午 org.springframework.web.servlet.PageNotFound noHandlerFound 警告: No mapping...' 因为项目使用了spring security,之前我一度怀疑是不是没有给静态文件设置访问权限,后来确认了已经设置了访问静态资源无需权限认证,也检查了mvc拦截器的配置信息,没发现什么明显异常,之后就纳闷了...方法2:直接告诉spring,这个你就得这么做! 在MVC配置文件添加资源文件映射。

80730

springMVC

而且,当多个视图依赖于同一个业务对象时是没有灵活性的。...MVC设计模型 MVC 是一种著名的设计模式,特别是在 Web 应用程序领域。模式全都是关于将包含业务数据的模块与显示模块的视图解耦的。这是怎样发生的?...一个层次的重定向几乎可以解决计算机业的所有问题。确实,在模型和视图之间引入重定向层可以解决问题。此重定向层是控制器。控制器将接收请求,执行更新模型的操作,然后通知视图关于模型更改的消息。...依赖于模型的状态并且依赖于请求的控制器可以决定要显示哪个视图。 springMVC的强大之处 1.Spring MVC 实现了即用的 MVC 的核心概念。...在下一个部分,将使用 SimpleFormController 并说明 Spring MVC 提供的各种即用功能。

52220

SpringBoot系列教程web篇之全局异常处理

测试说明 实例测试如下,上面我们声明捕获的两种异常被拦截并输出对应的堆栈信息; 但是需要注意 404 和未捕获的 500 异常则显示的 SpringBoot 默认的错误页面; 此外我们捕获返回的 http...@ResponseStatus 上面的 case 捕获的异常返回的状态码是 200,但是在某些 case ,可能更希望返回更合适的 http 状态码,此时可以使用ResponseStatus来指定...首先修改配置文件application.properties,将NoHandlerFoundException抛出来 # 出现错误时, 直接抛出异常 spring.mvc.throw-exception-if-no-handler-found...=true # 设置静态资源映射访问路径,下面两个二选一, spring.mvc.static-path-pattern=/statics/** # spring.resources.add-mappings...String handleNoHandlerError(NoHandlerFoundException e, HttpServletResponse response) { return "noHandlerFound

84120

Spring 全家桶之 Spring Web MVC(三)- View & ViewResolve

一、视图解析 新建maven项目spring-mvc-view,项目创建过程与配置方式及其maven依赖,创建过程参考QA 由浅入深 Spring Framework 5.0(十)- Spring MVC...转发forward 在spring-mvc-view项目中controller包下新增一个ForwardControlle。...MVC 视图解析的原理 在浏览器输入URL地址后会先进入DispatchServlet类的doDispatch方法,通过调用doDispatch方法完成响应,doDispatch执行过程的关键步骤如下...视图对象才能真正的转发(将模型数据全部放在请求域中)或者重定向到页面,才能真正的渲染视图; 视图解析器 Spring MVC为解析逻辑视图提供了多种方式,可以在Spring MVC配置文件上下文中配置一种或者多种解析策略...,将原Controller的login方法注释,浏览器输入 http://localhost:8080/login 页面可以正常显示

40820

Spring MVC 前端控制器 (DispatcherServlet)处理流程

Spring MVC 请求处理流程 用户发起请求,到 DispatcherServlet; 然后到 HandlerMapping 返回处理器链(包含拦截器和具体处理的 Handler); 调用处理器链的适配器...拦截匹配的请求,Servlet拦截匹配规则要自己定义,把拦截下来的请求,依据相应的规则分发到目标Controller来处理,是配置spring MVC的第一步。...DispatcherServlet是前端控制器设计模式的实现,提供Spring Web MVC的集中访问点,而且负责职责的分派,而且与Spring IoC容器无缝集成,从而可以获得Spring的所有好处...mappedHandler = getHandler(processedRequest); if (mappedHandler == null) { noHandlerFound...asyncManager.isConcurrentHandlingStarted()) { return; } // 如果没有视图

36220

SpringMVC DispatcherServlet执行流程及源码分析你要知道的SpringMVC DispatcherServlet执行流程及源码分析都在这里

首先,让我们站在Spring MVC的四大组件:DispatcherServlet、HandlerMapping、HandlerAdapter以及ViewResolver的角度来看一下Spring MVC...通过时序图和上面的讲解不难发现,整个Spring MVC对于用户请求的响应和处理都是以DispatcherServlet类为核心,其他三大组件均与前端控制器进行交互,三大组件之间没有交互并且互相解耦,因此...如果没有找到对应的HandlerExecutionChain对象,则会执行noHandlerFound()方法,继续查看其源码如下: /** * No handler found ->...如果没有查找到能够处理Handler的HandlerAdapter则会抛出异常,如果在开发的过程Handler在实现接口时出现了问题就可能会遇到上述异常。...总结 通过前文的源码分析,我们能够清楚的认识到Spring MVC对用户请求的处理过程,进一步加深对Spring MVC的理解。 备注 由于作者水平有限,难免出现纰漏,如有问题还请不吝赐教。

2K81

SpringMVCurl-pattern 和*的区别「建议收藏」

学习Spring的时候,在配置web.xml的时候,把url-pattern 配置成/*,启动项目后去访问自己的Controller总是报404.检查了很多发现资源是存在的,配置的地址也没有问题,为什么会出现...现整理一下: (1):在使用springmvc时,都会在web.xml配置一个dispatchservlet,如下: springmvc <servlet-class...当映射规则为 /* 时,最后返回xx.jsp也经过DispatcherServlet,它又会去找相对应的处理器,这也是控制台打印noHandlerFound,也就导致了404错误,页面更别想看到。...当改成 / 后,servlet不会匹配到.jsp的URI,当然就能正常返回页面了 (5):参考文章 url-pattern / 和 /* 的区别 Difference between / and

1K20

SpringBoot拦截器和动态代理有什么区别?

1.拦截器拦截器(Interceptor)准确来说在 Spring MVC 的一个很重要的组件,用于拦截 Controller 的请求。...,但二者完全不同,他们的主要区别体现在以下几点:使用范围不同:拦截器通常用于 Spring MVC ,主要用于拦截 Controller 请求。...小结在 Spring Boot ,拦截器和动态代理都是用来实现功能增强的,但二者没有任何关联关系,它的区别主要体现在使用范围、实现原理、加入时机和使用的难易程度都是不同的。...本文已收录到我的面试小站 www.javacn.site,其中包含的内容有:Redis、JVM、并发、并发、MySQL、SpringSpring MVCSpring Boot、Spring Cloud...、MyBatis、设计模式、消息队列等模块。

32310

IDEA 新建 Spring MVC 工程项目与 SpringMVC 运行流程

感谢这段时间里同组同事们,明哥芳姐龙哥磊哥的工作的帮助 ~ 这篇文章写下来,最大的感触是:对于初学 Spring 的人来说,理解其架构实现真的很难,包括笔者写了这么长的文章,中间也有很多内容并没有完全理解...对于像笔者一样没有使用经验的开发者来说,一定要在一个 SpringMVC 的工程之上使用单步调试的方法,逐步深入理解 Spring 的实现,才能在脑海中构建出基本的 Spring 框架。...事实上,在 Maven 世界,project 可以什么都没有,甚至没有代码,但是必须包含 pom.xml 文件。...图 1.8 Tomcat 依赖库添加到 External Libraries 1.5 项目中添加 Web 工程 现在我们只有 Spring 的框架,但 Spring MVC 必需的 Web 工程框架还没有搭建...如果你所有的 Web 应用服务器的默认 Servlet 名称不是 “default”,则需要通过 default-servlet-name 属性显示指定为: <mvc:default-servlet-handler

3.4K31

Spring MVC 原理探秘 - 一个请求的旅行过程

为了让我的 Spring 源码分析系列文章更为丰富一些,所以从本篇文章开始,我将来向大家介绍一下 Spring MVC 的一些原理。在本篇文章,你将会了解到 Spring MVC 处理请求的过程。...以及 Spring MVC 的核心 DispatcherServlet 类的源码分析。在掌握以上内容后,相信大家会对 Spring MVC 的原理有更深的认识。...HttpServletBean 覆写了父类的无参 init 方法,并在该方法中将 ServletConfig 里的配置信息设置到子类对象,比如 DispatcherServlet。...需要说明的是,以上只是进行了简单分析,并没有深入分析每个方法调用。...本篇文章从一个请求的旅行过程进行分析,并在分析的过程补充了 Servlet 和 DispatcherServlet 方面的知识。

1.4K42

阿里面试:看过框架源码吗?举例说明一下

还可以回答 Spring Cloud 微服务,某个组件执行的流程源码,这样能很好的体现你对微服务比较熟悉,因为微服务在公司应用比较广泛,所以回答的好,是一个极大的加分项。...1.Spring Boot 源码分析Spring Boot 在收到请求之后,会先执行前端控制器 DispatcherServlet,并调用其父类 FrameworkServlet 的 service...Spring Cloud LoadBalancer 内置了两种负载均衡策略:轮询负载均衡策略随机负载均衡策略轮询负载均衡策略的核心实现源码如下:// ++i 去负数,得到一个正数值int pos =...本文已收录到我的面试小站 www.javacn.site,其中包含的内容有:Redis、JVM、并发、并发、MySQL、SpringSpring MVCSpring Boot、Spring Cloud...、MyBatis、设计模式、消息队列等模块。

15920
领券