您的位置:首页 > Web前端 > JavaScript

JSP中页面跳转 sendRedirect VS forward

2010-11-04 11:20 411 查看

response:
有关于对客户端请求之响应,可以利用它来设定一些要响应的讯息,例如标题信息、响应状态码等.

request:
有关于客户端请求的信息,都可以由它来取得,例如请求标头、请求方法、请求参数、使用者IP等等信息。

response:

属于重定向请求;

其地址栏的URL会改变;

会向服务器发送两次请求;

sendRedirect用法:
response.sendRedirect("跳转页面路径或需要执行的操作路径");
不保持request中设置属性,也就是说会产生一个新的request。跳转到得页面刷新仍然是当前页面。

sendRedirect用法:

response.sendRedirect("hello.jsp") 是在响应后转向

request:

属于请求转发;

其地址栏的URL不会改变;

向服务器发送一次请求;

forward用法:
RequestDispatcher view = request.getRequestDispatcher("跳转页面路径或需要执行的操作路径");
view.forward(request, response);

也可以写成:

request.getRequestDispatcher("跳转页面路径或需要执行的操作路径").forward(request, response);
保持request中设置的属性,跳转页面后刷新会重新执行操作。
例如:
index.html ->(submit 数据) -> http://......../submit.do
submit.do 对应的 Servlet 为 submit.java. 其中包含下列片段的两种情况:

1. response.sendRedirect("hello.html") . 浏览器会指向hello.html,并且地址栏是http://...../hello.html
2. RequestDispatcher view = request.getRequestDispatcher("hello.html");
view.forward(request, response);
浏览器会指向hello.html, 但是地址栏仍然是http://...../submit.do

forward用法:
RequestDispatcher rd = request.getRequestDispatcher(URL);
request.setAttribute("str",str);
rd.forward(request,response);
是响应前转向,可以把参数带过去,你也可以在这里设置request.setAttribute("str",str);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: