- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我试图为 Spring MVC 服务的每个请求返回一个有效的 JSON 主体,无论是正确的还是无效的。
使用 @ExceptionHandler
和 ExceptionHandlerExceptionResolver
、DefaultHandlerExceptionResolver
和我自己的 AbstractHandlerExceptionResolver
的组合我能够处理并为几乎所有发送到有效 Controller 或被 Spring Security 拒绝的无效请求设置主体。
但是,DispatcherServlet
抛出的错误,如 noHandlerFound
,无法被拦截,因此响应具有有效的 HTTP 状态代码,如 404,但正文包含Tomcat 默认 XML 错误。
有人知道如何设置或配置 Spring 异常解决程序以便拦截所有失败的请求并可以设置有效的 JSON 主体吗?
最佳答案
There is a section explaining spring 如何处理调度程序 servlet 的异常解析器:
The dispatcher's exception resolution strategy can be specified via a HandlerExceptionResolver, for example mapping certain exceptions to error pages. Default are AnnotationMethodHandlerExceptionResolver, ResponseStatusExceptionResolver, and DefaultHandlerExceptionResolver. These HandlerExceptionResolvers can be overridden through the application context. HandlerExceptionResolver can be given any bean name (they are tested by type).
为了能够支持 Dispatcher 异常处理覆盖,您必须实现 HandlerExceptionResolver
和 Ordered
类,并将实现声明为 spring bean。您必须将 getOrder
值作为 Integer.MIN_VALUE
返回以覆盖任何其他现有处理程序。
关于java - 使用 ExceptionResolver 捕获 Spring MVC DispatcherServlet 异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13197348/
我正在将 Spring Boot 应用程序从版本 1.5.6 升级到 2.1.1。当我启动应用程序时,它卡在这一行: INFO: Initializing Spring DispatcherServl
基本上我想将我的应用程序分成两部分。每个部分都有自己的安全内容和自己的 @Controller。 @Services 应该可以从两个部分访问。 所以我想,我应该得到 2 个 DispatcherSer
我正在 Eclipse 中使用 Spring boot、Java 8 制作 RESTful 服务。每当我尝试从 Postman(或任何其他地方)发送 HTTP 请求时,我都会收到 404 未找到代码。
我认为配置文件中缺少某些内容,但我看不到。 当我在浏览器中输入 --> localhost:8080/Procura/notifications --> 我在控制台中输入这个 -->org.sprin
我看到类似的问题并尝试将 URL 从/* 映射到/但它不起作用。我也尝试过直接从浏览器访问该 URL,但也不起作用。我是 Spring 新手,有人可以帮助我吗? Archetype C
大家好,因为这是我的 Controller 类,当我在 postman 中运行此应用程序时,它的显示状态为 200 ok。但是文件未读取,我如何将带有扩展名的文件名作为方法中的字符串参数传递?我缺少您
这在 stackOverflow 中是一个很常见的问题,但没有一个相同问题的主题能解决我的问题。 我们有一个使用 xml 配置的模板配置,但现在我们正试图摆脱它并开始使用 Java 配置。 所以我有一
这个问题在这里已经有了答案: Why does Spring MVC respond with a 404 and report "No mapping found for HTTP request
这个问题在这里已经有了答案: Why does Spring MVC respond with a 404 and report "No mapping found for HTTP request
我一直在使用 Spring MVC 4/hibernate 4 和 Web flow 2.4 以及 Java 配置来构建应用程序。我使用 JUnits 构建和测试了服务和 daos,但在向应用程序添加
配置 Tomcat 7.0.47 上的 Servlet 3.0 Spring 3.1 问题 我有一个比较特殊的情况,我需要两个 DispatcherServlets : 一个处理资源请求,一个处理正常
Spring MVC 使用 DispatcherServlet 将控制路由到适当的 Controller 。但是过滤器在哪里适合流程?如果我指定一个过滤器来执行 session 管理或身份验证,过滤器
这是我用于 spring mvc 的当前配置: 1- web.xml: spring org.springframework.web.servlet.DispatcherServ
我正在使用 Spring 框架来编写 Web 服务应用程序。应用程序中没有 html 或 jsp 页面。它是纯粹的网络服务。 这是我的 Controller 类 @RequestMapping("/*
我收到消息“请求的资源 () 不可用。”当转到我使用 DispatcherServlet 映射的 url 时。以前,当我将映射设置为使用 .do 扩展名时,它可以工作,但是当我在没有扩展名的情况下进行
在请求适当的 View 时,我不断收到 404 not found HTTP 响应。 这些是我的配置文件。 web.xml ssytem-ecommerce-pro
我有一个带有 javascript UI 的 Spring MVC (v4.1.3) Web 应用程序。我已经实现了一个自定义 DispatcherServlet 并在 web.xml 中配置了相同的
我在我的 Controller 中使用了 request.getRequestDispatcher(url).forward(request, response) 方法!!我有麻烦了。 (我知道调度程
几天来我一直在与这条消息作斗争,无法弄清楚我错在哪里。 基本上我想做的是在我的服务中提供 json。我对返回 jsp 不感兴趣。 我请求的网址是 localhost/service/products/
Spring + Angular 文件上传。尝试上传另一个文件时出现 HTTP - 417 错误时只能上传文件。 在第一次上传后启动服务器后,在 tomcat 上我收到以下消息 - Framewo
我是一名优秀的程序员,十分优秀!