我有来自两个独立项目的这两个控制器,我们可以命名:
显然这些是来自不同项目的两个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,因为我将在那里处理请求。
谢谢!
答案 0 :(得分:0)
您需要使用redirect
代替forward
。
答案 1 :(得分:0)
如果主机与当前主机的主机不同,则需要协议
return "redirect:http://www.yahoo.com";
查看Spring Web MVC framework中的重定向:前缀部分,同时查看this
逻辑视图名称,例如redirect:/ myapp / some / resource将 相对于当前Servlet上下文的重定向,而名称如 重定向:http://myhost.com/some/arbitrary/path将重定向到 绝对URL。
答案 2 :(得分:0)
想出来但是它有点乱,我用HttpClient将我的请求发布到URL。它还带有转发请求。无论如何,感谢所有帮助人员。谢谢:))