Spring MVC 控制器:"return forward"、"return redirect" 和 "return jsp file" 之间有什么区别
Spring MVC Controller: what is the difference between "return forward", "return redirect" and "return jsp file"
我不明白我应该使用什么。
我有两个页面 - intro.jsp(1) 和 booksList.jsp(2)。我为每个页面创建了一个控制器 Class。
第一页有打开第二页的按钮:
<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通过这种方法做什么?换句话说,我怎样才能从第一页跳到第二页?
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 article。 POST 方法处理后是否必须使用“重定向”?
The first question is: I am not sure about correctness this button. It
works well, but I have question mark after press this button.
好的,这是插入一个问号,因为您使用的是 GET http 方法。您需要使用 POST 方法来传递请求负载中的数据。
return "redirect:/books";
它returns到解释http响应并自动调用重定向的客户端(浏览器)URL
return "jsp/books/booksList";
它处理 JSP 并将 HTML 发送给客户端
return "forward:/books";
它传递请求并直接在服务器端调用URL。
要决定使用哪一种,您必须考虑每种方法的某些方面:
转发:速度更快,客户端浏览器不参与,浏览器显示原件URL,请求转发做转发URL.
Redirect:比较慢,涉及到客户端浏览器,浏览器显示重定向的URL,它创建一个新的请求到重定向的URL。
我不明白我应该使用什么。 我有两个页面 - intro.jsp(1) 和 booksList.jsp(2)。我为每个页面创建了一个控制器 Class。 第一页有打开第二页的按钮:
<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通过这种方法做什么?换句话说,我怎样才能从第一页跳到第二页?
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 article。 POST 方法处理后是否必须使用“重定向”?
The first question is: I am not sure about correctness this button. It works well, but I have question mark after press this button.
好的,这是插入一个问号,因为您使用的是 GET http 方法。您需要使用 POST 方法来传递请求负载中的数据。
return "redirect:/books";
它returns到解释http响应并自动调用重定向的客户端(浏览器)URL
return "jsp/books/booksList";
它处理 JSP 并将 HTML 发送给客户端
return "forward:/books";
它传递请求并直接在服务器端调用URL。
要决定使用哪一种,您必须考虑每种方法的某些方面:
转发:速度更快,客户端浏览器不参与,浏览器显示原件URL,请求转发做转发URL.
Redirect:比较慢,涉及到客户端浏览器,浏览器显示重定向的URL,它创建一个新的请求到重定向的URL。