【发布时间】:2015-09-30 09:20:46
【问题描述】:
我有来自两个独立项目的这两个控制器,让我们为它们命名:
- project1.controller1
- project2.controller1
显然,这是来自不同项目的两个 Spring 控制器。我想要的是使 project1.controller1 成为网关,所有请求都将发送到这里。如果请求将转到 project2.controller1 或新控制器,则会处理该请求。
一些伪代码:
@Controller
public class someClassFromProject1{
@RequestMapping(value="/controller1", method=RequestMethod.POST)
public String smsCatcher(String target, HttpServletRequest request,
HttpServletResponse response){
//some processing, converting request to string, etc
if("someStringThatIsPartOfTheRequest".equals("someString"))
//carry request and forward it to project2.controller1
else
//go to another external controller
}
}
并且在 project2.controller 1 中看起来像这样:
@Controller
public class someClassFromProject2{
@RequestMapping(value="/controller1", method=RequestMethod.POST)
public String smsCatcher(String target, HttpServletRequest request,
HttpServletResponse response){
//processing
}
}
我已经尝试过return "forward:/someUrl"; 和return "redirect:someUrl";。它不起作用,也没有到达 project2.controller1。那么关于这个有什么想法吗?
编辑:忘了添加这个,不同的项目意味着不同的WAR,但部署在同一个服务器上。并且请求应该从 project1.controller1 转移到 project2.controller1 因为我要在那里处理请求。
谢谢!
【问题讨论】:
-
您所说的不同项目是什么意思?它们是否托管在不同的网址上?
-
嗨,不同的项目意味着不同的 java war 文件,但仍然在同一个服务器上。
-
使用这样的重定向,返回"redirect:hostname/controller_mapping";
-
@WeareBorg 嗨,其他人建议这样做,但它不会继续请求。
标签: java spring spring-mvc jakarta-ee web