1.转发
| request.getRequestDispatcher("smserror.jsp").forward(request,response); |
这一步之前的工作是对提交的request做处理,这一步(这句话)是表示:处理完了,分发到下一个JSP页面或者下一个Action继续处理。
会有forward()和redirect()两种情况,forward()是request中的参数继续传递,redirect()则是重新生成request了。
request.setAttribute("test",test) ; -转发的时候可以将内容存在request域中-重定向之后的可以直接跳到一个页面中
之后可以在返回的页面中调用getAttribute(“test”)---直接取到保存在域中的内容
2.重定向
response.sendRedirect("jump.jsp");
3.两者之间的区别
两者路径都可以写绝对路径。但是尽量动态的获取web应用的名称 方法 request.getContextPath() + 后边的路径
他们的区别是:
response.sendRedirect是向客户浏览器发送页面重定向指令,浏览器接收后将向web服务器重新发送页面请求,所以执行完后浏览器的url显示的是跳转后的页面。跳转页面可以是一个任意的url(本服务器的和其他服务器的均可)。
RequestDispatcher.forward则是直接在服务器中进行处理,将处理完后的信息发送给浏览器进行显示,所以完成后在url中显示的是跳转前的页面。在forward的时候将上一页面中传送的request和response信息一同发送给下一页面(而response.sendRedirect不能将上一页面的request和response信息发送到下一页面)。由于forward是直接在服务器中进行处理,所以forward的页面只能是本服务器的。
2614

被折叠的 条评论
为什么被折叠?



