如何使用 web.xml 和错误控制器以 JSON 格式配置 Spring 错误页面
How to configure Spring errror page in JSON format with web.xml and an error controller
使用 Spring 5,我目前能够在 src/main/webapp/web.xml
中配置一个 错误页面 ,即添加以下配置:
<error-page>
<location>/WEB-INF/error.html</location>
</error-page>
这样,当controller中有Exception
时,就会渲染error.html
。但是,此 error.html
的格式 html 不同于预期的 JSON 格式。
我试图用这样的代码制作一个错误控制器:
@RestController
@RequestMapping(value = "/handler")
public class ErrorController {
@RequestMapping(value = "/errors")
public String renderErrorPage(HttpServletRequest httpRequest) {
System.out.println("DEBUG::come to error page");
return "test error";
}
}
同时配置error-page
为:
<servlet-mapping>
<servlet-name>dispatcher</servlet-name>
<url-pattern>/rest/*</url-pattern>
</servlet-mapping>
<error-page>
<location>/handler/errors</location>
</error-page>
但是ErrorController
无法调用
问题:如何使用 web.xml 和错误控制器以 JSON 格式配置 Spring 错误页面?
我最终意识到servlats是通过servlet-mapping
标签用/rest/*
过滤的,所以error-page
的location
必须加上前缀[=16] =],意思是 error-page
标签应该这样配置:
<error-page>
<location>/rest/errors</location>
</error-page>
相应地,控制器可以配置为:
@RestController
//@RequestMapping(value = "/handler")
public class ErrorController {
@RequestMapping(value = "/errors")
public String renderErrorPage(HttpServletRequest httpRequest) {
System.out.println("DEBUG::come to error page");
return "test error";
}
}
使用 Spring 5,我目前能够在 src/main/webapp/web.xml
中配置一个 错误页面 ,即添加以下配置:
<error-page>
<location>/WEB-INF/error.html</location>
</error-page>
这样,当controller中有Exception
时,就会渲染error.html
。但是,此 error.html
的格式 html 不同于预期的 JSON 格式。
我试图用这样的代码制作一个错误控制器:
@RestController
@RequestMapping(value = "/handler")
public class ErrorController {
@RequestMapping(value = "/errors")
public String renderErrorPage(HttpServletRequest httpRequest) {
System.out.println("DEBUG::come to error page");
return "test error";
}
}
同时配置error-page
为:
<servlet-mapping>
<servlet-name>dispatcher</servlet-name>
<url-pattern>/rest/*</url-pattern>
</servlet-mapping>
<error-page>
<location>/handler/errors</location>
</error-page>
但是ErrorController
无法调用
问题:如何使用 web.xml 和错误控制器以 JSON 格式配置 Spring 错误页面?
我最终意识到servlats是通过servlet-mapping
标签用/rest/*
过滤的,所以error-page
的location
必须加上前缀[=16] =],意思是 error-page
标签应该这样配置:
<error-page>
<location>/rest/errors</location>
</error-page>
相应地,控制器可以配置为:
@RestController
//@RequestMapping(value = "/handler")
public class ErrorController {
@RequestMapping(value = "/errors")
public String renderErrorPage(HttpServletRequest httpRequest) {
System.out.println("DEBUG::come to error page");
return "test error";
}
}