Spring 如何映射 URL 以及在哪里阅读更多相关信息

How Spring maps URL and where to read more about it

我是 Spring 的新手。我试图通过做而不是阅读来学习它。所以我发现了一些令人困惑的东西。但它有效。我想知道为什么以及如何?

    @Controller
    @RequestMapping("/ok")
    public class MyController {

        @RequestMapping(value = "/ok", method = RequestMethod.GET)
        public ModelAndView findAllAccounts() throws Exception {
            ModelAndView mav = new ModelAndView();
            mav.setViewName("account");
            mav.addObject("someText", "Listing all accounts!");
            return mav;
        }

        @RequestMapping(value="/ok/{accountId}", method = RequestMethod.GET)
        public ModelAndView findAccount(@PathVariable int accountId, Model model) {
            ModelAndView mav = new ModelAndView();
            mav.setViewName("account");
            mav.addObject("someText", String.format("Showing account %d", accountId));
            return mav;
        }   
    }

对于上面的代码,我发现了。

工作获取请求 url : http://localhost:8080/ok/

工作获取请求 url : http://localhost:8080/ok/ok/888

但我期待 url :http://localhost:8080/ok/ok/ 也应该有效。但它不起作用。为什么?如果 http://localhost:8080/ok/ok/888 有效,为什么 http://localhost:8080/ok/ok/ 无效?

当我在 tomcat 中部署它时也是如此。它仅在命名为 ROOT.war 时有效。如果我改成 XYZ.war,它不起作用。为什么?

  1. http://localhost:8080/ok/ok/ 不起作用,因为它将您的最后一个 ok 视为您的 accountId,并且无法转换为整数。最好的文档是 the javadoc
  2. 你关于 tomcat 的问题 - 我相信用另一个名字应该没问题,只有这样你才能访问它作为 http://localhost:8008/XYZ/