我不明白该用什么。
我有两页-intro.jsp(1)和bookslist.jsp(2)。对于每个页面,我创建了一个控制器类。
第一页有打开第二页的按钮:
第一个问题是:我不确定这个按钮是否正确。它很好用,但按这个按钮后我有问号。
第二个问题是:当我按下该按钮时,调用带有下一个注释的方法(第二页的控制器):
@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 article。在post方法处理之后,是否必须使用“重定向”??
最佳答案:
第一个问题是:我不确定这个按钮是否正确。它
很好,但按这个按钮后我有问号。
好的,它插入了一个问号,因为您使用了get-http方法。您需要使用post方法来传递请求负载中的数据。return "redirect:/books";
它返回到客户端(浏览器),客户端(浏览器)解释HTTP响应并自动调用重定向URL
return "jsp/books/booksList";
它处理JSP并将HTML发送到客户机
return "forward:/books";
它传输请求并直接在服务器端调用URL。
要决定使用哪种方法,您必须考虑每种方法的某些方面:
转发:更快,客户端浏览器不参与,浏览器显示原始的URL,请求被传输做转发的URL。
重定向:速度较慢,涉及到客户端浏览器,浏览器显示重定向的URL,它会创建一个新的重定向URL请求。