Arg*_*don 20 java spring http spring-mvc java-ee
我不明白我应该用什么.我有两个页面--intro.jsp(1)和booksList.jsp(2).对于每个页面,我创建了一个Controller类.第一页有按钮打开第二页:
<form method="GET" action="/request-list">
<input type="submit"/>
</form>
Run Code Online (Sandbox Code Playgroud)
第一个问题是:我不确定这个按钮的正确性.它运作良好,但按下此按钮后我有问号.
第二个问题是:当我按下该按钮时,调用带有下一个注释的方法(第二页的控制器):
@RequestMapping(value = "/books")
@Controller
public class BooksListController {
@RequestMapping
public String booksList() {
return "jsp/books/booksList";
}
}
Run Code Online (Sandbox Code Playgroud)
我应该通过这种方法返回什么?换句话说,如何从第一页跳到第二页?
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方法处理后我是否必须使用"重定向"?
Mar*_*iti 35
第一个问题是:我不确定这个按钮的正确性.它运作良好,但按下此按钮后我有问号.
好吧,它插入一个问号,因为你使用GET http方法.您需要使用POST方法传递请求有效负载中的数据.
return "redirect:/books";
Run Code Online (Sandbox Code Playgroud)
它返回到客户端(浏览器),它解释http响应并自动调用重定向URL
return "jsp/books/booksList";
Run Code Online (Sandbox Code Playgroud)
它处理JSP并将HTML发送到客户端
return "forward:/books";
Run Code Online (Sandbox Code Playgroud)
它传输请求并直接在服务器端调用URL.
要决定使用哪一个,您必须考虑每种方法的某些方面:
转发:速度更快,客户端浏览器不参与,浏览器显示原始URL,转发请求转发URL.
重定向:速度较慢,涉及客户端浏览器,浏览器显示重定向的URL,它会向重定向的URL创建新请求.
| 归档时间: |
|
| 查看次数: |
33124 次 |
| 最近记录: |