servlet无法跳转到jsp页面
RequestDispatcherdispatcher=request.getRequestDispatcher("/GoodsCar.jsp");dispatcher....
RequestDispatcher dispatcher=request.getRequestDispatcher("/GoodsCar.jsp");
dispatcher.forward(request, response);
我把response.sendRedirect("login.jsp");放在第二句前面时,还可以跳转,但是放在第二句后面的时候,就不可以跳转了 展开
dispatcher.forward(request, response);
我把response.sendRedirect("login.jsp");放在第二句前面时,还可以跳转,但是放在第二句后面的时候,就不可以跳转了 展开
展开全部
首先要理解这两句话的意思
request.getRequestDispatcher().forward(request,response)这句话是把你的请求扔到了另外的服务上面了,像你上面这么写的话,就是把原来的请求扔给了GoodsCar.jsp去处理,如果你其他东西没有写错的话,页面应该会跳转到GoodsCar.jsp,而在这个jsp里面的request对象其实跟原来你的servlet里面的是同一个,servlet里面的request可以拿到的东西,这个jsp的request也可以拿到,因为它是servlet直接扔过来的,这个动作是由servlet发起的,所以客户端其实并不知道,留意一下你浏览器上面的url你就知道了,不管servlet里面forward到哪里去,你浏览器上面的url依然是这个servlet的地址,说明浏览器根本就不知道servlet已经把请求扔到别的地方去处理了。
response.sendRedirect()这句话是指示客户端重定向请求。客户端把请求发到servlet之后,servlet处理后给出来的响应是跟客户端说:“你去访问login.jsp吧”,然后客户端就会重新发送一个请求去login.jsp,但是这个请求跟之前发送给servlet的请求已经不是同一个。这个动作经历了三步,第一部是客户端发送请求到servlet,第二步是servlet返回相应,第三步是客户端重新定向请求。最后重定向的动作是由客户端发出的,所以你可以看到你的浏览器上面的地址是变了的。
最后解释一下你的问题,你把forward放在sendRedirect前面,servlet执行到forward的时候就已经把请求扔到别的地方去了,sendRedirect被活生生吞掉了。而如果你把sendRedirect放在前面的话,servlet执行到sendRedirect的时候,就已经把相应返回了,后面的forward也是被硬生生弄没了。如果你所有代码都写正确的话,那效果应该就是上述那样的,如果还是不行的话,我感觉就是你的路径写得有问题,仔细检查一下。
request.getRequestDispatcher().forward(request,response)这句话是把你的请求扔到了另外的服务上面了,像你上面这么写的话,就是把原来的请求扔给了GoodsCar.jsp去处理,如果你其他东西没有写错的话,页面应该会跳转到GoodsCar.jsp,而在这个jsp里面的request对象其实跟原来你的servlet里面的是同一个,servlet里面的request可以拿到的东西,这个jsp的request也可以拿到,因为它是servlet直接扔过来的,这个动作是由servlet发起的,所以客户端其实并不知道,留意一下你浏览器上面的url你就知道了,不管servlet里面forward到哪里去,你浏览器上面的url依然是这个servlet的地址,说明浏览器根本就不知道servlet已经把请求扔到别的地方去处理了。
response.sendRedirect()这句话是指示客户端重定向请求。客户端把请求发到servlet之后,servlet处理后给出来的响应是跟客户端说:“你去访问login.jsp吧”,然后客户端就会重新发送一个请求去login.jsp,但是这个请求跟之前发送给servlet的请求已经不是同一个。这个动作经历了三步,第一部是客户端发送请求到servlet,第二步是servlet返回相应,第三步是客户端重新定向请求。最后重定向的动作是由客户端发出的,所以你可以看到你的浏览器上面的地址是变了的。
最后解释一下你的问题,你把forward放在sendRedirect前面,servlet执行到forward的时候就已经把请求扔到别的地方去了,sendRedirect被活生生吞掉了。而如果你把sendRedirect放在前面的话,servlet执行到sendRedirect的时候,就已经把相应返回了,后面的forward也是被硬生生弄没了。如果你所有代码都写正确的话,那效果应该就是上述那样的,如果还是不行的话,我感觉就是你的路径写得有问题,仔细检查一下。
追问
呃。。。我有点混乱。。。可以讲的通俗一点吗?
就是造成这个的原因是什么?
那两句话我是照着书上打的,在其他servlet里面都可以运行的
追答
最好的办法就是……不要一齐用,关键是放一齐也没用,谁放前面,就执行谁,后面放多了反而可能出一些奇奇怪怪的问题,原因就是上面写的,以后可以一边看一边体会
展开全部
前两位的回答都比较明晰。
forward是服务器端跳转语句,看你的代码, dispatcher.forward(request, response);会跳到GoodsCar.jsp页面
而sendRedirect也是跳转语句,看你的代码,response.sendRedirect("login.jsp")会跳到login.jsp页面。
两个都是跳转语句,你说的把response.sendRedirect("login.jsp");放在第二句前面时,还可以跳转,是可以跳转到login.jsp页面;“放在第二句的后面,就不能跳转”这句话不对,如果放在第二句 的后面,会跳转到GoodsCar.jsp页面。
你能不能够理解?dispatcher.forward(request, response);和response.sendRedirect("login.jsp");都是跳转语句,执行任何一句,页面就会跳转了,下面的一句话当然不会执行了。
forward是服务器端跳转语句,看你的代码, dispatcher.forward(request, response);会跳到GoodsCar.jsp页面
而sendRedirect也是跳转语句,看你的代码,response.sendRedirect("login.jsp")会跳到login.jsp页面。
两个都是跳转语句,你说的把response.sendRedirect("login.jsp");放在第二句前面时,还可以跳转,是可以跳转到login.jsp页面;“放在第二句的后面,就不能跳转”这句话不对,如果放在第二句 的后面,会跳转到GoodsCar.jsp页面。
你能不能够理解?dispatcher.forward(request, response);和response.sendRedirect("login.jsp");都是跳转语句,执行任何一句,页面就会跳转了,下面的一句话当然不会执行了。
追问
但是放在第二句的后面之后,它就停留在servlet页面,login这个不能跳,我懂了,但是GoodsCar.Jsp也不能跳,我就不知道为什么了
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2018-06-28 · 百度知道合伙人官方认证企业
育知同创教育
1【专注:Python+人工智能|Java大数据|HTML5培训】 2【免费提供名师直播课堂、公开课及视频教程】 3【地址:北京市昌平区三旗百汇物美大卖场2层,微信公众号:yuzhitc】
向TA提问
关注
展开全部
首先要理解这两句话的意思
request.getRequestDispatcher().forward(request,response)这句话是把你的请求扔到了另外的服务上面了,像你上面这么写的话,就是把原来的请求扔给了GoodsCar.jsp去处理,如果你其他东西没有写错的话,页面应该会跳转到GoodsCar.jsp,而在这个jsp里面的request对象其实跟原来你的servlet里面的是同一个,servlet里面的request可以拿到的东西,这个jsp的request也可以拿到,因为它是servlet直接扔过来的,这个动作是由servlet发起的,所以客户端其实并不知道,留意一下你浏览器上面的url你就知道了,不管servlet里面forward到哪里去,你浏览器上面的url依然是这个servlet的地址,说明浏览器根本就不知道servlet已经把请求扔到别的地方去处理了。
response.sendRedirect()这句话是指示客户端重定向请求。客户端把请求发到servlet之后,servlet处理后给出来的响应是跟客户端说:“你去访问login.jsp吧”,然后客户端就会重新发送一个请求去login.jsp,但是这个请求跟之前发送给servlet的请求已经不是同一个。这个动作经历了三步,第一部是客户端发送请求到servlet,第二步是servlet返回相应,第三步是客户端重新定向请求。最后重定向的动作是由客户端发出的,所以你可以看到你的浏览器上面的地址是变了的。
request.getRequestDispatcher().forward(request,response)这句话是把你的请求扔到了另外的服务上面了,像你上面这么写的话,就是把原来的请求扔给了GoodsCar.jsp去处理,如果你其他东西没有写错的话,页面应该会跳转到GoodsCar.jsp,而在这个jsp里面的request对象其实跟原来你的servlet里面的是同一个,servlet里面的request可以拿到的东西,这个jsp的request也可以拿到,因为它是servlet直接扔过来的,这个动作是由servlet发起的,所以客户端其实并不知道,留意一下你浏览器上面的url你就知道了,不管servlet里面forward到哪里去,你浏览器上面的url依然是这个servlet的地址,说明浏览器根本就不知道servlet已经把请求扔到别的地方去处理了。
response.sendRedirect()这句话是指示客户端重定向请求。客户端把请求发到servlet之后,servlet处理后给出来的响应是跟客户端说:“你去访问login.jsp吧”,然后客户端就会重新发送一个请求去login.jsp,但是这个请求跟之前发送给servlet的请求已经不是同一个。这个动作经历了三步,第一部是客户端发送请求到servlet,第二步是servlet返回相应,第三步是客户端重新定向请求。最后重定向的动作是由客户端发出的,所以你可以看到你的浏览器上面的地址是变了的。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
dispatcher.forward(request, response);
已经跳转了啊
已经跳转了啊
更多追问追答
追问
什么意思?已经跳转了?
追答
dispatcher.forward(request, response);
就是跳转啊 既然已经跳转了 这个之后的的语句都不会被执行了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询