【问题标题】:How Spring maps URL and where to read more about itSpring 如何映射 URL 以及在哪里阅读有关它的更多信息
【发布时间】:2016-02-13 14:50:53
【问题描述】:

我是 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;
        }   
    }

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

working 获取请求 url:http://localhost:8080/ok/

working 获取请求 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,它就不起作用。为什么?

【问题讨论】:

  • 定义“它不起作用”。
  • 它应该可以工作。对localhost:8080/ok/ok 的请求将映射到findAllAccounts()。您遇到了什么问题?
  • “我正在尝试通过实践而不是阅读来学习它。” - 只是出于好奇,为什么...?

标签: java spring spring-mvc tomcat mapping


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

【讨论】:

    猜你喜欢
    • 2020-02-28
    • 1970-01-01
    • 1970-01-01
    • 2011-01-02
    • 1970-01-01
    • 1970-01-01
    • 2012-01-13
    • 1970-01-01
    相关资源
    最近更新 更多