Reputation: 4568
I want my Spring MVC application to redirect to a dynamic URL (submitted by the user). So if I have code like this,
@RequestMapping("/redirectToSite")
protected ModelAndView redirect(
@RequestParam("redir_url") String redirectUrl,
HttpServletRequest request,
HttpServletResponse response)
{
// redirect to redirectUrl here
return ?
}
what should I write to redirect to the submitted URL? For instance http://mySpringMvcApp/redirectToSite?redir_url=http://www.google.com
should redirect to Google.
Upvotes: 44
Views: 92910
Reputation: 81
If server response with 3xx status code, then browser check status code. If status code is 3xx, then browser check Location header. and redirect to Location header's value. So setting http status, Location header is enough.
see https://datatracker.ietf.org/doc/html/rfc7231#section-6.4
Also you can consider 301 permanent moved, 302 temporary redirect, 307 and 308.
in java code.
httpServletResponse.setStatus(308);
httpServletResponse.setHeader("Location", redirectUrl);
Upvotes: 0
Reputation: 71
@RequestMapping(value="/redirect",method=RequestMethod.GET)
void homeController(HttpServletResponse http){
try {
http.sendRedirect("Your url here!");
} catch (IOException ex) {
}
}
Upvotes: 7
Reputation: 341003
Try this:
@RequestMapping("/redirectToSite")
protected String redirect(@RequestParam("redir_url") String redirectUrl)
{
return "redirect:" + redirectUrl;
}
This is explained in 16.5.3.2 The redirect: prefix of Spring reference documentation. Of course you can always do this manually:
response.sendRedirect(redirectUrl);
Upvotes: 87