问题描述
在Java中转发response.getRequestDispatcher("xx.jsp").forword(request,response)和重定向request.sendRedirect("xx.jsp")的区别:转发:转发是在服务器端起作用的,当使用forward()方法时,Servlet容器传递HTTP请求,从当前的Servlet或jsp到指定的Servlet或jsp,此过程仍然在request作用范围内。转发后,浏览器的地址栏内容不变。重定向:重定向是在用户的浏览器端工作的,是Servlet对浏览器做出响应后,浏览器再次发送了一个新请求,重定向后,浏览器的地址栏内容发送变化。注意:其实最大的区别:就数数据的传递,如何你想把数据通过request作用域传递到下一个页面的话,那就用转发,而且效率也很高,反之,就使用重定向。
解决方案
解决方案二:
转发是重新生成一个request重定向则无,用的还是第一次的request
解决方案三:
不错以前学习过,现在再复习一下呵呵
解决方案四:
你别在这里误人子弟啦,response.getRequestDispatcher("xx.jsp").forword(request,response)和重定向request.sendRedirect("xx.jsp"),你看看自己有没有写错啊?????!!!是不是应该是:request.getRequestDispatcher("xx.jsp").forword(request,response)和重定向response.sendRedirect("xx.jsp").!悲哀...
解决方案五:
你写的都是请求转发!!重定向是响应对象那里头的方法!!好好看书!!
解决方案六:
引用3楼wwkms的回复:
你别在这里误人子弟啦,response.getRequestDispatcher("xx.jsp").forword(request,response)和重定向request.sendRedirect("xx.jsp"),你看看自己有没有写错啊?????!!!是不是应该是:request.getRequestDispatcher("xx.jsp").forword(request,response……
3楼说的很对。request的那个是服务器端的跳转,你可以看下IE中的url没有发生变化.而response是客户端的跳转,URL是会发生变化的。。。request跳转是可以带参数的,而response是不能带request类型的参数的。望你仔细体会吧。刚开始的时候我也是很混乱的。。
解决方案七:
引用5楼testmelody的回复:
引用3楼wwkms的回复:你别在这里误人子弟啦,response.getRequestDispatcher("xx.jsp").forword(request,response)和重定向request.sendRedirect("xx.jsp"),你看看自己有没有写错啊?????!!!是不是应该是:request.getRequestDispatcher("xx.jsp").forwo……
这样理解很对。request请求一次。而response是请求了两次。
解决方案八:
--!三楼确实没说错,但是response好像是响应吧,当执行response时已经到了客户端了,