社区
Web 开发
帖子详情
大家来讨论下response.sendRedirect()和request.getRequestDispatcher().forward(request,response)的区别
teamax
2007-05-25 01:41:13
如题!欢迎讨论!!!!!!!!!!!!!
...全文
5950
12
打赏
收藏
大家来讨论下response.sendRedirect()和request.getRequestDispatcher().forward(request,response)的区别
如题!欢迎讨论!!!!!!!!!!!!!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
12 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
_小河
2012-06-30
打赏
举报
回复
好啊 终于明白为什么我每次刷新都同样的信息提交了
marqueeee
2011-11-30
打赏
举报
回复
forward()可以传递参数,比如forward("/index.jsp?name=" + name);
xiaobo__
2011-11-05
打赏
举报
回复
谢谢 还是不太懂
hulangamk103
2011-06-20
打赏
举报
回复
[Quote=引用 5 楼 lic_go 的回复:]
request.getRequestDispatcher(String path) : 返回一个javax.servlet.RequestDispatcher对象,该对象的forward方法用于转发请求
[/Quote]
谢谢lic_go!同时谢谢楼主,把问题给引了出来。
sirtener
2010-09-16
打赏
举报
回复
学习了, 长见识了
曾经痴迷网游
2010-07-30
打赏
举报
回复
学习了
lanselixiang233
2009-09-06
打赏
举报
回复
谢谢各位啊
lic_go
2008-12-24
打赏
举报
回复
request.getRequestDispatcher(String path) : 返回一个javax.servlet.RequestDispatcher对象,该对象的forward方法用于转发请求
cl55
2007-05-25
打赏
举报
回复
redirect 会首先发一个response给浏览器, 然后浏览器收到这个response后再发一个requeset给服务器, 然后服务器发新的response给浏览器. 这时页面收到的request是一个新从浏览器发来的.
forward 发生在服务器内部, 在浏览器完全不知情的情况下发给了浏览器另外一个页面的response. 这时页面收到的request不是从浏览器直接发来了,可能己经放了数据.
所以:
request.setAttribute存的东西
只用通过方法2跳转 才能在新页取出来
dr_lou
2007-05-25
打赏
举报
回复
request.setAttribute存的东西
只用通过方法2跳转 才能在新页取出来
thinker28754
2007-05-25
打赏
举报
回复
使用response.sendRedirect()地址栏将改变
使用request.getRequestDispatcher().forward(request,response)地址栏中的信息保持不变.
Plat
2007-05-25
打赏
举报
回复
跳转方式
http://localhost:8080/Test应用
运用forward方法只能重定向到同一个Web应用程序中的一个资源。而sendRedirect方法可以让你重定向到任何URL。
表单form的action="/uu";sendRedirect("/uu");表示相对于服务器根路径。如http://localhost:8080/Test应用(则提交至http://localhost:8080/uu);
Forward代码中的"/uu"则代表相对与WEB应用的路径。如http://localhost:8080/Test应用(则提交至http://localhost:8080/Test/uu);
(运用RequestDispatcher接口的Forward)方法
forward()无法重定向至有frame的jsp文件,可以重定向至有frame的html文件,
同时forward()无法在后面带参数传递,比如servlet?name=frank,这样不行,可以程序内通过response.setAttribute("name",name)来传至下一个页面.
重定向后浏览器地址栏URL不变.
只有在客户端没有输出时才可以调用forward方法。如果当前页面的缓冲区(buffer)不是空的,那么你在调用forward方法前必须先清空缓冲区。
"/"代表相对与web应用路径
RequestDispatcher rd = request.getRequestDispatcher("/ooo");
rd.forward(request, response);提交至http://localhost:8080/Test/ooo
RequestDispatcher rd = getServletContext().getRequestDispatcher("/ooo");
rd.forward(request, response);提交至http://localhost:8080/Test/ooo
RequestDispatcher rd =getServletContext().getNamedDispatcher("TestServlet");(TestServlet为一个<servlet-name>)
rd.forward(request, response);提交至名为TestServlet的servlet
如果在<jsp:forward>之前有很多输出,前面的输出已使缓冲区满,将自动输出到客户端,那么该语句将不起作用,这一点应该特别注意。
另外要注意:它不能改变浏览器地址,刷新的话会导致重复提交
从http://localhost:8080/Test/gw/page.jsp中转发
<jsp:forward page="OtherPage.jsp"/>在JSP页面被解析后转换成pageContext.forward("OtherPage.jsp");
"/OtherPage.jsp"提交到http://localhost:8080/Test/OtherPage.jsp
"OtherPage.jsp"提交到http://localhost:8080/Test/gw/OtherPage.jsp
(运用HttpServletResponse接口的sendRedirect)方法302
是在用户的浏览器端工作,sendRedirect()可以带参数传递,比如servlet?name=frank传至下个页面,
同时它可以重定向至不同的主机上,sendRedirect()可以重定向有frame.的jsp文件.
假设转发代码包含于注册的servlet-url为/ggg/tt;jsp为/ggg/tt.jsp:
绝对路径:response.sendRedirect("http://www.brainysoftware.com")发送至http://www.brainysoftware.com
根路径:response.sendRedirect("/ooo")发送至http://localhost:8080/ooo
相对路径:response.sendRedirect("ooo")发送至http://localhost:8080/Test/ggg/ooo,
sendRedirect等同于此方式
response.setStatus(HttpServletResponse.SC_MOVED_PERMANENTLY);
String newLocn = "/newpath/jsa.jsp";
response.setHeader("Location",newLocn);
(Meta Refresh)方法200
这种方法是由HTML提供的,Meta本身就是HTML标签。使用方法是:<meta http-equiv="refresh" content="5; url=http://www.dreamdu.com/" />
相应的java代码
String content=stayTime+";URL="+URL;
response.setHeader("REFRESH",content);
转发和重定向的
区别
forward
和
redirect
的
区别
转发和重定向的
区别
forward
和
redirect
的
区别
request
.get
Request
Dispatcher
()..
forward
(
request
,
response
);和
response
.
send
Redirect
();的
区别
详解
计算机基础课程教学平台+毕业设计+源代码
//
request
.get
Request
Dispatcher
("student.jsp").
forward
(
request
,
response
);
response
.
send
Redirect
("student.jsp"); } else if (uc == 2) { //
request
.get
Request
Dispatcher
("teacher.jsp").
forward
(
request
,...
JSP面试容易问到的问题
<一>——
forward
与
send
Redirect
的
区别
*********************************************************************************
forward
:可以在JSP页面中使用,可以在Servlet中实现。 在JSP页面中使用<jsp:
forward
...
jsp跳转get
Request
Dispatcher
()和
send
Redirect
()的
区别
response
.
send
Redirect
()是重新定向,前后页面不是一个
request
。 2.
Request
Dispatcher
.
forward
()是在服务器端运行;HttpServlet
Response
.
send
Redirect
()是通过向客户浏览器发送命令来完成.所以
Request
Dispatcher
....
上传文件_java_
转载在Servlet中进行服务端跳转的方式:
request
.get
Request
Dispatcher
("success.html").
forward
(
request
response
);在Servlet中进行客户端跳转的方式:
response
.
send
Redirect
("fail.html");
Web 开发
81,095
社区成员
341,712
社区内容
发帖
与我相关
我的任务
Web 开发
Java Web 开发
复制链接
扫一扫
分享
社区描述
Java Web 开发
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章