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