当前位置: 首页 > 面试题库 >

从Spring MVC中的控制器操作重定向到外部URL

宋飞掣
2023-03-14
问题内容

我注意到以下代码将用户重定向到项目内的URL,

@RequestMapping(method = RequestMethod.POST)
public String processForm(HttpServletRequest request, LoginForm loginForm, 
                          BindingResult result, ModelMap model) 
{
    String redirectUrl = "yahoo.com";
    return "redirect:" + redirectUrl;
}

然而,以下内容已按预期正确重定向,但需要http://或https://

@RequestMapping(method = RequestMethod.POST)
    public String processForm(HttpServletRequest request, LoginForm loginForm, 
                              BindingResult result, ModelMap model) 
    {
        String redirectUrl = "http://www.yahoo.com";
        return "redirect:" + redirectUrl;
    }

我希望重定向始终重定向到指


问题答案:

你可以通过两种方式来实现。

第一:

@RequestMapping(value = "/redirect", method = RequestMethod.GET)
public void method(HttpServletResponse httpServletResponse) {
    httpServletResponse.setHeader("Location", projectUrl);
    httpServletResponse.setStatus(302);
}

第二:

@RequestMapping(value = "/redirect", method = RequestMethod.GET)
public ModelAndView method() {
    return new ModelAndView("redirect:" + projectUrl);
}


 类似资料:
  • 我是一个使用ASP.NET MVC5的新手。我需要对控制器进行Jquery调用,以返回一个传递单个参数的新视图。我可以看到很多类似MVC3和之前版本的例子,但却很难找到任何处理MVC4或MVC5并起作用的例子。我所要做的就是从输入元素获取一个值,将其传递给控制器ActionResult,然后打开一个新视图。 PageTwo是视图,Home是控制器。 我试过的代码(包括许多其他代码)通常在404:

  • 我遇到的一个案例是,我必须将链接重定向到来自特定控制器的外部url。我试过很多案例,比如 也试过这样的东西 也尝试将返回类型作为模型和视图发送。但什么都不管用。谁能帮我解决这个问题吗。我看到许多人建议使用sendRedirect和setHeader方法,但在我的案例中,这两种方法行不通。所以我也想知道是否有任何配置可以用于使用这些HTTPServeletResponse的方法。

  • 假设我有一个名为的扩展,my_extension一个名为的插件。 然后,我的控制器中有一个名为的函数。 如何通过通常的http GET请求从外部调用此?

  • 对于我们的web应用程序,我需要保存获取和显示的项的顺序,这取决于视图--或者准确地说--生成视图的控制器和操作(当然还有用户id,但这不是这里的重点)。 我认为,与其在每个控制器操作中自己给出一个标识符(以便使用它对DB输出进行视图依赖的排序),不如从控制器和操作方法中自动创建这个标识符更安全、更容易。 如何从控制器的操作方法中获取控制器和操作的名称?还是我需要反思?

  • 在Spring控制器操作中,我使用以下语句重定向到外部URL: 然而,它似乎是在本地重定向url,而不是用www.yahoo替换整个地址栏url。通用域名格式。 示例:通过上述重定向,我的地址栏现在看起来像: 如何解决这个问题?我甚至尝试重定向到视图,然后让视图重定向URL,但结果仍然相同。它似乎有效的唯一方法是如果我有http://www.yahoo.com或https://www.yahoo.