我的web-inf目录中有一个hello.jsp文件。如果我的控制器返回“redirect:hello”,我的理解是它重定向浏览器以在hello.jsp文件上执行get请求。
为什么这样做?我以为浏览器无法在我的web-inf文件夹中请求任何内容。重定向到像控制器方法那样可公开访问的东西不是更有意义吗?
答案 0 :(得分:0)
redirect命令将302(或它是301?)Location头发送给客户端。在你的情况下,它将是相对URL"你好"。这与他们目前所处的任何URL相关。因此,如果他们在www.example.com/some-url/some-other-url,则会将其重定向到www.example.com/some-url/hello。
然后,浏览器向www.example.com/some-url/hello发出GET请求。
如果您碰巧有一个名为" hello"的JSP,那并不重要。这完全是关于URL的。
通常,重定向路径是"绝对"意思是起始" /",尽管这仍然与上下文相关。
答案 1 :(得分:0)
redirect:hello
将浏览器重定向到/hello
网址。它不检索名为hello
的JSP文件。您正在考虑的是视图解析器,它将返回的String解析为JSP文件。
@RequestMapping(value = "/page1")
public String redirectToHello() {
return "redirect:hello"; // redirects from /page1 to /hello
}
@RequestMapping(value = "/hello")
public String getHello() {
return "hello"; // uses a configured view resolver to get a jsp file named hello.jsp
}