Spring MVC Controller:“返回前进”,“返回重定向”和“返回jsp文件”之间有什么区别
问题内容:
我不明白该用什么。我有两个页面-intro.jsp(1)和booksList.jsp(2)。我为每一页创建了一个控制器类。第一页具有打开第二页的按钮:
<form method="GET" action="/request-list">
<input type="submit"/>
</form>
第一个问题是: 我不确定此按钮的正确性。效果很好,但是按此按钮后我有问号。
第二个问题是: 当我按下该按钮时,将调用带有下一个注释的方法(第二页的控制器):
@RequestMapping(value = "/books")
@Controller
public class BooksListController {
@RequestMapping
public String booksList() {
return "jsp/books/booksList";
}
}
我应该通过这种方法返回什么?换句话说,我如何从第一页跳到第二页?
return "redirect:/books"; returns http://localhost:8080/books?
return "jsp/books/booksList"; returns http://localhost:8080/request-list?
return "forward:/books"; returns http://localhost:8080/request-list?
我看到的结果是相同的:所有这些字符串给了我相同的页面(打开了第2页)。在哪种情况下,我应该使用“重定向”,“转发”,“ page.jsp”?
我也阅读了Post / Redirect /
Get文章
。POST方法处理后是否必须使用“重定向”?
问题答案:
第一个问题是:我不确定此按钮的正确性。效果很好,但是按此按钮后我有问号。
好的,它插入一个问号,因为您使用的是GET http方法。您需要使用POST方法在请求有效负载中传递数据。
return "redirect:/books";
它返回到客户端(浏览器),后者解释http响应并自动调用重定向URL。
return "jsp/books/booksList";
它处理JSP并将HTML发送给客户端
return "forward:/books";
它传输请求并直接在服务器端调用URL。
要决定使用哪种方法,您必须考虑每种方法的某些方面:
转发:速度更快,不涉及客户端浏览器,浏览器显示原始URL,请求被转发做转发的URL。
重定向:速度较慢,涉及到客户端浏览器,浏览器显示重定向的URL,它将为重定向的URL创建一个新请求。