serlet传递问题?? 在servlet里有两中方式可以进行跳转,一种是request的RequsetDisptcher的forwd方法.一种是response的sendRedirect方法不过它们好像都是get方式进行的.我想向大家请教一下还有其他的方式进行跳转的吗?在servlet里面可以有post方式进行跳转的吗? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 大哥 会操作access吗? 帮我看看 上面的两种跳转的区别你知道吧我就吧多说了forword是内部跳转,sendRedirect是客户端重定向这和你的Http请求方式没有什么太大关系,和你form 的设置的请求有关 这个我知道,不过在校内网编程的时候我跳转的时候设置的session的值是空的,而校内网要求的访问方式是post我想是不是和跳转方式有关? 跳转方式不会有多大影响 GET只是信息现实在地址栏上,而且会有长度限制。。 request.getRequestDispatcher("目标页面").forward(request, response);response.sendRedirect("目标页面");这两种跳转方式跟POST和GET请求无关!至于你说的session没有东西,估计是你还没有区分这两种跳转的区别!它们的区别: 1.从地址栏判断(response跳转地址栏变为目标页面的地址栏,request还是原来的地址栏) 2.从请求上判断: request跳转是一次请求: 客户端-->服务器-->服务器跳转到目标页面 response跳转是两次请求:客户端-->服务器-->服务器到客户端-->客户端去寻找目标页面 从请求上的判断联系到了第三个注意点:作用域(四大作用域) 3.从作用域判断 因为request是一次请求,所以把数据放到request.setAttribute("test",内容);来保存,用request跳转到目标页取是对的 如果用response跳转,作用域还是request,到目标页取就取不到了,因为是两次请求 所以如果用response跳转必须放到session及session以上的作用域 同意楼上和get post请求无关session 可以传递本页面和本页面的子页面。request 可以传递一次请求的。用request.getRequestDispatch().forward()是在服务器上跳转还是一次请求。你要是用第二种跳转的话就得就得用session 来传递。 感谢以上回答问题的大哥大姐们,虽然用这个方法没解决我的问题还是给了我启发. 顺便说一下我遇到的那个问题解决了,谢谢,呵呵! 特别感谢lijiaof16 的详细讲解. 可以在当前的那个页面内的form中设置method为post,再在跳转的JAVA类中重写doPost方法就可以了。 response.sendRedirect("BBB");这个是通知浏览器跳转, 就是说, 告诉浏览器: 你别来找我了, 找 BBB 去.浏览器收到这个通知,会放弃当前请求, 重新去请求那个 BBB-----------------------------------------------------------request.getRequestDispatcher("BBB").forward(request, response);这个是在服务端把 处理响应权 转让给 BBB.就是说,这个请求原来页面不处理了, 让给 BBB 来处理并响应这个请求这个转换,浏览器是不知情的如果浏览器请求的是 AAA但是 AAA 中 forward 给了 BBB浏览器并不知道 请求被 BBB 响应了, 浏览器还以为 AAA 响应了请求这个过程中,浏览器没有也不需要再重新请求服务端 求指点.....chrome浏览器怎么查看链接地址.. 封装DAO数据访问层 50分在线等。解决给分!!! JSP,如何验证其客户端的唯一性 莫名其缪的问题,急死了 JSP 连接 SQL Server 2005 用myeclipse+tomcat+mysql开发的web项目,在自己电脑上跑没问题,但是发布到另外一台电脑上,当然环境都做好的,就报Caused by: ja 关于JAVABEAN中SCOPE属性的讨论,望指教 jsp如何调用servlet 紧急求救,在线等待。 字体百分比显示可以吗 servlet与JSP页面的问题~~
我就吧多说了forword是内部跳转,sendRedirect是客户端重定向
这和你的Http请求方式没有什么太大关系,和你form 的设置的请求有关
response.sendRedirect("目标页面");
这两种跳转方式跟POST和GET请求无关!
至于你说的session没有东西,估计是你还没有区分这两种跳转的区别!
它们的区别:
1.从地址栏判断(response跳转地址栏变为目标页面的地址栏,request还是原来的地址栏)
2.从请求上判断:
request跳转是一次请求: 客户端-->服务器-->服务器跳转到目标页面
response跳转是两次请求:客户端-->服务器-->服务器到客户端-->客户端去寻找目标页面
从请求上的判断联系到了第三个注意点:作用域(四大作用域)
3.从作用域判断
因为request是一次请求,所以把数据放到request.setAttribute("test",内容);来保存,用request跳转到目标页取是对的
如果用response跳转,作用域还是request,到目标页取就取不到了,因为是两次请求
所以如果用response跳转必须放到session及session以上的作用域
request 可以传递一次请求的。用request.getRequestDispatch().forward()是在服务器上跳转还是一次请求。
你要是用第二种跳转的话就得就得用session 来传递。
这个是通知浏览器跳转, 就是说, 告诉浏览器: 你别来找我了, 找 BBB 去.
浏览器收到这个通知,会放弃当前请求, 重新去请求那个 BBB-----------------------------------------------------------request.getRequestDispatcher("BBB").forward(request, response);
这个是在服务端把 处理响应权 转让给 BBB.
就是说,这个请求原来页面不处理了, 让给 BBB 来处理并响应这个请求这个转换,浏览器是不知情的
如果浏览器请求的是 AAA
但是 AAA 中 forward 给了 BBB浏览器并不知道 请求被 BBB 响应了, 浏览器还以为 AAA 响应了请求
这个过程中,浏览器没有也不需要再重新请求服务端