私の場合、私のアプリはクライアントへのエラー応答に対して応答を@ExceptionHandler
返します。JSON
HTTP status
error 404
ただし、によって処理されるような同様の JSON 応答を返すように処理する方法を理解しようとしています。@ExceptionHandler
アップデート:
というか、存在しないURLにアクセスされたとき
私の場合、私のアプリはクライアントへのエラー応答に対して応答を@ExceptionHandler
返します。JSON
HTTP status
error 404
ただし、によって処理されるような同様の JSON 応答を返すように処理する方法を理解しようとしています。@ExceptionHandler
アップデート:
というか、存在しないURLにアクセスされたとき
私はSpring 4.0とJava構成を使用しています。私の作業コードは次のとおりです。
@ControllerAdvice
public class MyExceptionController {
@ExceptionHandler(NoHandlerFoundException.class)
public ModelAndView handleError404(HttpServletRequest request, Exception e) {
ModelAndView mav = new ModelAndView("/404");
mav.addObject("exception", e);
//mav.addObject("errorcode", "404");
return mav;
}
}
JSP の場合:
<div class="http-error-container">
<h1>HTTP Status 404 - Page Not Found</h1>
<p class="message-text">The page you requested is not available. You might try returning to the <a href="<c:url value="/"/>">home page</a>.</p>
</div>
初期パラメータ構成の場合:
public class AppInitializer extends AbstractAnnotationConfigDispatcherServletInitializer {
@Override
public void customizeRegistration(ServletRegistration.Dynamic registration) {
registration.setInitParameter("throwExceptionIfNoHandlerFound", "true");
}
}
またはxml経由:
<servlet>
<servlet-name>rest-dispatcher</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>throwExceptionIfNoHandlerFound</param-name>
<param-value>true</param-value>
</init-param>
</servlet>
spring > 3.0 では @ResponseStatus を使用
@ResponseStatus(value = HttpStatus.NOT_FOUND)
public class ResourceNotFoundException extends RuntimeException {
...
}
@Controller
public class MyController {
@RequestMapping.....
public void handleCall() {
if (isFound()) {
// do some stuff
}
else {
throw new ResourceNotFoundException();
}
}
}
見つける最も簡単な方法は、次を使用することです。
@ExceptionHandler(Throwable.class)
public String handleAnyException(Throwable ex, HttpServletRequest request) {
return ClassUtils.getShortName(ex.getClass());
}
URL が DispatcherServlet のスコープ内にある場合、入力ミスなどによって発生した 404 はこのメソッドによってキャッチされますが、入力された URL が DispatcherServlet の URL マッピングを超えている場合は、次のいずれかを使用する必要があります。
<error-page>
<exception-type>404</exception-type>
<location>/404error.html</location>
</error-page>
また
特定のサーバー インスタンスのすべてのマッピングを処理できるように、DispatcherServlet マッピング URL に「/」マッピングを指定します。
サーブレットの標準的な方法を使用して404エラーを処理できます。次のコードを追加しますweb.xml
<error-page>
<exception-type>404</exception-type>
<location>/404error.html</location>
</error-page>