rog*_*ger 48 java jsp response request forward
当我使用JAVA时,我的页面跳转有问题,如果我使用:
response.sendRedirect("login.jsp")
Run Code Online (Sandbox Code Playgroud)
然后我得到这个网址: http://localhost:8080/login.jsp
但是,如果我使用
request.getRequestDispathcer("login.jsp").forward(request, response)
Run Code Online (Sandbox Code Playgroud)
然后我得到这个网址:( http://localhost:8080/Shopping/login.jsp"购物"是我模块的名称).
有什么不同?
Kee*_*san 75
为了简单解释差异,
response.sendRedirect("login.jsp");
Run Code Online (Sandbox Code Playgroud)
不预先添加contextpath(指的是捆绑servlet的应用程序/模块)
但是,而
request.getRequestDispathcer("login.jsp").forward(request, response);
Run Code Online (Sandbox Code Playgroud)
将添加相应应用程序的contextpath
此外,Redirect请求用于将资源重定向到不同的服务器或域.控制任务的传输由容器委托给浏览器.也就是说,重定向将标头发送回浏览器/客户端.此标头包含要由浏览器重定向的资源URL.然后浏览器向给定的URL发起新请求.
转发请求用于转发到进行呼叫的服务器内可用的资源.这种控制转移由容器内部完成,不涉及浏览器/客户端.
Ani*_*Rai 16
向前
控制可以转发到进行呼叫的服务器内可用的资源.这种控制转移由容器内部完成,不涉及浏览器/客户端.这是forward和sendRedirect之间的主要区别.转发完成后,如果需要,原始请求和响应对象将与其他参数一起传输.
重定向
控制可以重定向到不同服务器或域的资源.控制任务的传输由容器委托给浏览器.也就是说,重定向将标头发送回浏览器/客户端.此标头包含要由浏览器重定向的资源URL.然后浏览器向给定的URL发起新请求.由于它是一个新请求,旧请求和响应对象将丢失.
例如,sendRedirect可以将控制权从http://google.com转移到http://anydomain.com,但转发无法执行此操作.
"会话"在前进和重定向中都不会丢失.
要直观地看到forward和sendRedirect之间的区别,请查看浏览器的地址栏,在转发中,您将看不到转发的地址(因为浏览器不涉及)重定向,您可以看到重定向的地址.
Mau*_*iya 15
简单地说Forward(ServletRequest请求,ServletResponse响应)和sendRedirect(String url)之间的区别是
向前():
forward()方法在服务器端执行.forward ()方法由servlet容器提供.sendRedirect()方法快.RequestDispatcher接口中声明.的sendRedirect():
sendRedirect()方法在客户端执行.sendRedirect()方法是在下面提供的,HTTP它只能用于HTTP客户端.sendRedirect()方法较慢,因为在创建新请求时,旧请求对象将丢失.HttpServletResponse.| 归档时间: |
|
| 查看次数: |
151234 次 |
| 最近记录: |