当前位置: 首页 > 知识库问答 >
问题:

为Spring MVC REST API禁用Tomcat中的默认错误页面

呼延骏俊
2023-03-14

我使用Spring MVC3.2@RequestMapping和@ResponseBody作为REST服务。一个示例endpoint如下所示:

@RequestMapping(value = "query", method = RequestMethod.GET)
@ResponseBody
public Locations searchHandler(@RequestParam String q, HttpServletRequest request,     HttpServletResponse response) {
...
<html>
    <head>
        <title>Apache Tomcat/7.0.50 - Error report</title>
        <style>
            <!--H1 {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;font-size:22px;} H2 {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;font-size:16px;} H3 {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;font-size:14px;} BODY {font-family:Tahoma,Arial,sans-serif;color:black;background-color:white;} B {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;} P {font-family:Tahoma,Arial,sans-serif;background:white;color:black;font-size:12px;}A {color : black;}A.name {color : black;}HR {color : #525D76;}-->
        </style>
    </head>
    <body>
        <h1>HTTP Status 404 - </h1>
        <HR size="1" noshade="noshade">
            <p>
                <b>type</b> Status report
            </p>
            <p>
                <b>message</b>
                <u></u>
            </p>
            <p>
                <b>description</b>
                <u>The requested resource is not available.</u>
            </p>
            <HR size="1" noshade="noshade">
                <h3>Apache Tomcat/7.0.50</h3>
            </body>
        </html>

共有1个答案

益泰平
2023-03-14

好的,我找到解决办法了。我实现了一个异常处理程序,如上面的链接所述:

@ControllerAdvice
public class ErrorController {

    /**
     * .
     * @param request .
     * @param response .
     * @throws Exception .
     */
    @ExceptionHandler(Exception.class)
    public void handleConflict(HttpServletRequest request, HttpServletResponse response, Exception e) throws Exception {
        // If the exception is annotated with @ResponseStatus rethrow it and let
        // the framework handle it - like the OrderNotFoundException example
        // at the start of this post.
        // AnnotationUtils is a Spring Framework utility class.
        if (AnnotationUtils.findAnnotation(e.getClass(), ResponseStatus.class) != null) {
            throw e;
        }

        response.setStatus(400);
        response.getWriter().println(e.getMessage());
    }
}

使用response.getWriter()很重要...而不是使用response.senderror()。

 类似资料:
  • 我已经尝试禁用Spring boot W/C抛出的默认错误处理 {“时间戳”:1575346220347,“状态”:500,“错误”:“内部服务器错误”,“异常”:“org.springframework.web.client.httpclienterroreXception”,“消息”:“401未经授权”,“路径”:“/auth/login”} 和 但是我得到的是一堆HTML格式的响应,而不是应

  • 当响应的状态码被设置为错误状态码,并且响应体中没有内容时,Servlet容器通常会渲染一个HTML错误页。若需要定制容器默认提供的错误页,你可以在web.xml中定义一个错误页面<error-page>元素。在Servlet 3规范出来之前,该错误页元素必须被显式指定映射到一个具体的错误码或一个异常类型。从Servlet 3开始,错误页不再需要映射到其他信息了,这意味着,你指定的位置就是对Serv

  • 伙计们,我正在努力解决在Windows环境中的Tomcat中打开我的自定义错误页面的问题。我得到了一些解决方案,但没有运气。我尝试了几乎所有的链接,但它不适合我。其中一些适用于在Tomcat中部署的其他解决方案,但不适用于我的Web服务 我的网络.xml < br >我正在从我的Servlet 3.0应用程序< code > response . send error(http Servlet r

  • 问题内容: 当用户遇到某些错误(例如,代码为404的错误)时,我正在使用web.xml中的 元素来指定友好错误页面: 但是,我希望如果用户不符合中指定的任何错误代码 ,则他或她应该看到默认错误页面。我该如何使用web.xml中的元素呢? 问题答案: 在Servlet 3.0或更高版本上,你只需指定 但是,由于你仍在使用Servlet 2.5,因此别无选择,只能单独指定每个常见的HTTP错误。你需要

  • 的复制构造函数和赋值操作符的情况下,便编译器会为我们生成默认的复制构造函数和赋值操作符,以内存复制的形式完成对象的复制。虽然这种机制可以为我们节省很多编写复制构造函数和赋值操作符的时间,但是在某些情况下,比如我们不希望对象被复制,这种机制却是多此一举。) 关于类的“禁止复制”,现在可以使用delete关键字完美地直接表达: class X { // … X& operator=(c

  • 我在一个项目中使用Spring Boot和Data REST,我想禁用以下默认映射来调试映射问题: 我发现这个问题禁用了,这会导致这些映射不被映射。但是,我的控制器映射也不会被映射。 我可以在保留我定义的映射时禁用这些映射吗? 提前谢谢。