Java Spring MVC请求映射冲突
我对类上的@RequestMapping有一个问题。假设我有两个控制器:Java Spring MVC请求映射冲突,java,spring,spring-mvc,controller,mapping,Java,Spring,Spring Mvc,Controller,Mapping,我对类上的@RequestMapping有一个问题。假设我有两个控制器: @Controller @RequestMapping(value="/controller1") public class Controller1 { @RequestMapping(value="/method11.do") public @ResponseBody method11(){ //... } @RequestMapping(value="/met
@Controller
@RequestMapping(value="/controller1")
public class Controller1 {
@RequestMapping(value="/method11.do")
public @ResponseBody method11(){
//...
}
@RequestMapping(value="/method12.do")
public ModelAndView method12(){
//This method redirects me to another jsp where I'll call Controller2 methods
return new ModelAndView("test");
}
}
@Controller
@RequestMapping(value="/controller2")
public class Controller2 {
@RequestMapping(value="/method21.do")
public @ResponseBody method21(){
//...
}
}
当我第一次通过AJAX方法11调用时,它工作正常,生成的url是http://mydomain/myapp/controller1/method11.do
然后,我调用method12并重定向到test.jsp,然后从那里调用method21,问题是,生成的url不是预期的http://mydomain/myapp/controller2/method21.do
,但还有其他一些问题,具体取决于我如何进行AJAX调用:
url:'controller2/method21' --> http://mydomain/myapp/controller1/controller2/method21.do
url:'/controller2/method21' --> http://mydomain/controller2/method21.do
那么,我应该以什么方式进行调用,以便它们总是从http://mydomain/myapp/...
我相信我可以只使用url:'/myapp/controller2/method21.do'
,但我想应该有一种更通用的方式,我不必在每次通话中都使用“myapp”
这是我的web.xml:
<servlet>
<servlet-name>spring</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>spring</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
春天
org.springframework.web.servlet.DispatcherServlet
1.
春天
*.做
您应该通过使用JSP EL检索脚本中的上下文根,让客户端知道正确的URL
JSP中的
<script>var ctx = "${pageContext.request.contextPath}"</script>
在服务器端,您可以使用:
${pageContext.request.contextPath}
或JSTL有一个标记,
将附加您的上下文根。在jsp
中,您可以使用${pageContext.request.contextPath}
。所以url:'/${pageContext.request.contextPath}/controller2/method21
。谢谢!这很有效。另外,我想问,这是实现这一目标的正确方式,还是有其他更优雅、更方便的方式?可能通过web.xml或SpringServlet。xml@carcaret我不知道有什么更优雅的解决方案,我在博客上使用了这种方法,在不同的环境中上下文根发生了变化。本文讨论与静态资源有关的问题:
var url = ctx + "/rest_of_url"