社区
Java EE
帖子详情
response.sendRedirect和request.getRequestDispatcher().forward什么时候用哪个?
JarvisZhang87
2009-05-21 09:10:39
如题。
...全文
1460
18
打赏
收藏
response.sendRedirect和request.getRequestDispatcher().forward什么时候用哪个?
如题。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
18 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
梦里人
2010-09-10
打赏
举报
回复
受教!UP....
esft
2009-06-25
打赏
举报
回复
up
daerqwert
2009-05-31
打赏
举报
回复
2种的区别楼上的已经说得很清楚了。在什么地方用就是看自己的需求了。具体问题具体分析。
popeyeWong
2009-05-29
打赏
举报
回复
response.sendRedirect是重定向
request.getRequestDispatcher().forward是请求转发
Nalanchuixue
2009-05-28
打赏
举报
回复
1,response.sendRedirect是重定向
2,request.getRequestDispatcher().forward是请求转发
重定向的时候只能通过?后来传值!且只能传一个值;
forward转发是你可一通过request对象来传递一个object类型的值
这就要看你的具体需求了!比如传一个数组或者是个javabean时就需要使用forward了!
个人理解!
zm_hs
2009-05-26
打赏
举报
回复
注意哦。在做删除操作时,千万不能用forward
sutku
2009-05-26
打赏
举报
回复
[Quote=引用 9 楼 yefan00 的回复:]
引用 2 楼 lgq_0714 的回复:
Servlet中的两种跳转方法:
方法一:response.sendRedirect("../success.jsp")
利用这个方法如果跳转前有request.setAttribute("a","b")的话,那么参数是传不到success.jsp,因为它在客户端重定向到success.jsp了,本质上跳了2次。所以参数失效,使用这个的时候会发现浏览器的URL地址发生了变化。
方法二:RequestDispatcher rd = getServletContext().getRequestDispatcher("/login.jsp")…
[/Quote]
支持!!!
icebergzx
2009-05-26
打赏
举报
回复
简单的说,sendRedirect 可以跨站点的
getServletContext().getRequestDispatcher("/login.jsp").forward(request,response) 不可跨站的,只能在本站点内跳转
如楼上的兄弟所说,sendRedirect 后request原先所有的参数和属性丢失,而request.getRequestDispatcher().forward 会保持原先request的参数和数据,向下进一步处理。
云霄飞车
2009-05-23
打赏
举报
回复
[Quote=引用 2 楼 lgq_0714 的回复:]
Servlet中的两种跳转方法:
方法一:response.sendRedirect("../success.jsp")
利用这个方法如果跳转前有request.setAttribute("a","b")的话,那么参数是传不到success.jsp,因为它在客户端重定向到success.jsp了,本质上跳了2次。所以参数失效,使用这个的时候会发现浏览器的URL地址发生了变化。
方法二:RequestDispatcher rd = getServletContext().getRequestDispatcher("/login.jsp"); rd.forward(request,respon…
[/Quote]
顶哈。。。
dinghun8leech
2009-05-22
打赏
举报
回复
response.sendRedirect=把地址发送到浏览器端,让浏览器再请求,这是地址栏变的原因
request.getRequestDispatcher().forward=服务端的控制权转向,等于从一个servletClass跳到另一个servletClass或jsp继续运行,最后才返回所有的结果,所以地址栏不会变
request中attribute与parameter的有效期是在一次请求后,而实际使用第一种情况后发生了再次请求,所以是attribute与parameter丢失的原因。
效率上讲1肯定不如2,但有时候你必须得用1,其他时候用2即可。
_BennyTian
2009-05-22
打赏
举报
回复
最简单的区别:
一个地址栏会变
一个地址栏不变
2:
一个能保持同一个 request
一个保存不了
qq306850549
2009-05-22
打赏
举报
回复
request.getRequestDispatcher().forward
建议用这个
jiangnan_net
2009-05-22
打赏
举报
回复
response.sendRedirect("/*.*")想想参数
request.getRequestDispatcher().forward(request,response)想想参数
知道了吧。。
Study_Work_2009
2009-05-22
打赏
举报
回复
这也有具体情况具体分析,一般用forward就可以
ty_seven
2009-05-22
打赏
举报
回复
一般用forward就行了,但是有时为了防止误刷新需要用redirect
lgq_0714
2009-05-21
打赏
举报
回复
Servlet中的两种跳转方法:
方法一:response.sendRedirect("../success.jsp")
利用这个方法如果跳转前有request.setAttribute("a","b")的话,那么参数是传不到success.jsp,因为它在客户端重定向到success.jsp了,本质上跳了2次。所以参数失效,使用这个的时候会发现浏览器的URL地址发生了变化。
方法二:RequestDispatcher rd = getServletContext().getRequestDispatcher("/login.jsp"); rd.forward(request,response); 利用这个方法跳转,参数可以被正确传送,而且效率比第一种高,IE的URL地址不变。
myairland
2009-05-21
打赏
举报
回复
response.sendRedirect是重定向
request.getRequestDispatcher().forward是请求转发
第一种方法request里的值会丢掉
http://blog.csdn.net/sky840505/archive/2009/01/05/3714909.aspx
response
_
send
Redirect
和
request
_get
Request
Dispatcher
()_
forward
的区别.
跳转方式 http://localhost:8080/Test应用 运用
forward
方法只能重定向到同一个Web应用程序中的一个资源。而
send
Redirect
方法可以让你重定向到任何URL。 表单form的action="/uu";
send
Redirect
("/uu");表示相对于服务器根路径。如http://localhost:8080/Test应用(则提交至http://localhost:8080/uu);
Forward
代码中的"/uu"则代表相对与WEB应用的路径。如http://localhost:8080/Test应用(则提交至http://localhost:8080/Test/uu);
转发和重定向的区别
forward
和
redirect
的区别
转发和重定向的区别
forward
和
redirect
的区别
request
.get
Request
Dispatcher
()..
forward
(
request
,
response
);和
response
.
send
Redirect
();的区别详解
计算机基础课程教学平台+毕业设计+源代码
课程教学平台设计源码,java实现 <% //设置编码格式
request
.setCharacterEncoding("GB18030"); //取到表单中用户填写的username,userpassword,userClass参数的值 String username =
request
.getParameter("username"); String userpassword =
request
.getParameter("userpassword"); System.out.println(username); System.out.println(userpassword); int userClass = Integer.parseInt(
request
.getParameter("userClass")); System.out.println(userClass); //判断参数是否为空,或者是空字符串,如果是返回到index.jsp界面,如果符合标准跳到相应的管理后台界面 if (username == null || username.trim().equals("") || userpassword == null || userpassword.trim().equals("")) {
request
.get
Request
Dispatcher
("index.jsp").
forward
(
request
,
response
); //
response
.
send
Redirect
("index.jsp"); } else { //建立数据库连接,判断用户名和密码是否在数据库user表中存在 Connection conn = DB1.getConn(); System.out.println(conn); Statement stmt = DB1.createStmt(conn); //sql语句,从user表中选择出username和userpassword与用户填入的一样的数据 String sql = "select * from user where username = '" + username + "' and userpassword = '" + userpassword + "'"; ResultSet rs = DB1.executeQuery(stmt, sql); System.out.println(conn); if (rs.next()) { //设置session,把用户名添加到seesion属性中 session.setAttribute("username", username);
request
.setAttribute("username", username);
request
.setAttribute("userClass", userClass); //判断登陆用户是那种用户类型,如果是1跳转到学生页面student.jsp, //如果是2跳转到教师页面teacher.jsp,如果是3跳转到管理员界面manager.jsp int uc = rs.getInt(3); if (uc == userClass) { if (uc == 1) { //
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
,
response
);
response
.
send
Redirect
("teacher.jsp"); } else if (uc == 3) { //
request
.get
Request
Dispatcher
("manager.jsp").
forward
(
request
,
response
);
response
.
send
Redirect
("manager.jsp"); } } else { //用户身份不正确时,给出相应的提示 out.println("请选择正确的登录身份"); out.println("返回主页"); } } else { //当用户名或密码错误时给出相应的提示 out.println("用户名/密码错误,请输入正确的用户名和密码!"); out.println("返回主页"); } //关闭数据库连接 DB1.close(rs); DB1.close(stmt); DB1.close(conn); } %>
JSP面试容易问到的问题
——
forward
与
send
Redirect
的区别 *********************************************************************************
forward
:可以在JSP页面中使用,可以在Servlet中实现。 在JSP页面中使用,例如要跳转到userlist.jsp,可以写: 在Servlet中使用
Request
Dispatcher
的
forward
方法,要跳转到userlist.jsp,可以写:
Request
Dispatcher
rd =
request
.get
Request
Dispatcher
("userlist.jsp"); rd.
forward
(
request
,
response
);
send
Redirect
方式使用
response
对象的方法
send
Redirect
方法完成,代码如下:
response
.
send
Redirect
("userist.jsp");
jsp跳转get
Request
Dispatcher
()和
send
Redirect
()的区别
1.
request
.get
Request
Dispatcher
()是请求转发,前后页面共享一个
request
;
response
.
send
Redirect
()是重新定向,前后页面不是一个
request
。 2.
Request
Dispatcher
.
forward
()是在服务器端运行;HttpServlet
Response
.
send
Redirect
()是通过向客户浏览器发送命令来完成.所以
Request
Dispatcher
.
forward
()对于浏览器来说是“透明的”;而HttpServlet
Response
.
send
Redirect
()则不是。 3.ServletContext.get
Request
Java EE
67,512
社区成员
225,881
社区内容
发帖
与我相关
我的任务
Java EE
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
复制链接
扫一扫
分享
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章