質問: マッピングされていないリクエストを全てSpringMVCで拾うことはできるのでしょうか。 たとえば、 ``` @RequestMapping(value="/{otherwise:.+}", method=RequestMethod.GET) public String otherwise() throws Exception { throw new TargetNotFoundException("ご指定のページが見つかりませんでした。"); } @ExceptionHandler(TargetNotFoundException.class) @ResponseStatus(value=HttpStatus.OK) public String handleException(final TargetNotFoundException e, HttpServletRequest request, HttpServletResponse response) { LOGGER.error(e.getMessage()); e.printStackTrace(); request.setAttribute("message", e.getMessage()); request.setAttribute("status", "404"); return "error"; } ``` とすれば、 {.+}のマッピングされていないリクエストはコントロールできますが、 {.+}/{.+}のURLはサーブレットコンテナで処理されてしまいます。 web.xmlなどでエラーコード別にハンドリングする方法ではできないことをしようとしているので、コントローラーで拾いたいです。 また、トランスポート層でリダイレクトさせる方法も考えましたが、WEBアプリケーションごとに設定しないといけないかと思うと面倒で、アプリケーション層で処理することができればそちらのほうがいいです。
回答: @RequestMappingのvalueは、antパターンでかけるから、 PathVariableを使わないのなら、`/**`で大丈夫のような気がします。 ただ、`http://domain/ContextRoot/**` 配下すべてだと、JavaScriptやCSSなどが 上手く解決できないです。 例えば ``` @RequestMapping("/**") @Cotroller public class SomeController { @RequestMapping(value = "/**") public String index() { return "index"; } } ``` とすると、 `/js/some.js`や`/css/style.css`などもコントローラーでハンドリングしてしまいます。