【问题标题】:Forwarding request to a new controller将请求转发到新控制器
【发布时间】: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


【解决方案1】:

您需要使用redirect 而不是forward

【讨论】:

    【解决方案2】:

    如果主机与当前主机不同,则需要该协议

    return "redirect:http://www.yahoo.com";
    

    查看Spring Web MVC framework 中的重定向:前缀部分,同时检查this

    诸如redirect:/myapp/some/resource 之类的逻辑视图名称将 相对于当前 Servlet 上下文的重定向,而名称如 redirect:http://myhost.com/some/arbitrary/path 将重定向到 绝对网址。

    【讨论】:

    • 您好,它是否也会继承请求?
    • 重定向行为进行往返所以请求被删除,所以如果你想保留数据把它放在 url "redirect:http://www.yahoo.com?c=2&y=3"
    【解决方案3】:

    想通了,但后来有点乱,我使用 HttpClient 将我的请求发布到 URL。它还将请求与转发一起携带。无论如何,感谢所有帮助的家伙。谢谢:)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-09-23
      • 2020-03-09
      • 2014-03-15
      • 2019-12-04
      • 2022-06-29
      相关资源
      最近更新 更多