`

forward和redirect的区别

阅读更多

void forward(ServletRequest request,ServletResponse response)

forward()方法的调用有两种方式:

1.HttpServletRequest.getRequestDispatcher(url).forward(request,response)

2.ServletContext.getRequestDispatcher(url).forward(request,response)

两种方式的区别是是否可以使用相对路径。HttpServletRequest.getRequestDispatcher(url).forward(request,response)的url可以使用相对路径也可以使用绝对路径,但是ServletContext.getRequestDispatcher(url).forward(request,response)必须使用绝对路径。这是因为HttpServletRequest有相对路径这个概念,而ServletContext没有相对路径的概念也只能使用绝对路径。

request.getRequestDispatcher( "pages/login.jsp").forward(request, response);//相对路径
this.getServletContext().getRequestDispatcher( "/pages/login.jsp").forward(request, response)//绝对路径

 forward()的请求转发是在服务器内部执行的,这对客服端是不透明的。在客户端发来的一个request请求后,服务器在内部可以经行一系列的forward转发,然后客户端并不知道这一情况,直到最后返回给客户端response。这就是forward转发对客户端的不透明性。

forward转发是直接将请求转发到指定url,所以该请求能够直接获得上一个请求的数据,request对象始终存在,不会重新创建。因为forward 转发发生在服务器内部, 在浏览器完全不知情的情况下发给了浏览器另外一个页面的response. 这时页面收到的request不是从浏览器直接发来了,可能己经放了数据。

forward()跳转是在同一个Webapp下进行的,而sendRedirect()可以定向到其他任何的地址。

 

void sendRedirect(String url)

sendRedirect()方法用response.sendRedirect(url)调用;

sendRedirect又称为“重定向”,这是因为 redirect 会首先发一个response给浏览器, 然后浏览器收到这个response后再发一个requeset给服务器, 然后服务器发新的response给浏览器,这时页面收到的request是从浏览器新发来的,所以上一个request的数据会丢失。

1
4
分享到:
评论

相关推荐

    转发和重定向的区别 forward和redirect的区别

    转发和重定向的区别 forward和redirect的区别 request.getRequestDispatcher()..forward(request,response);和 response.sendRedirect();的区别详解

    forward转发与redirect重定向的区别.zip

    forward转发与redirect重定向的区别

    forward与redirect区别

    forward是服务器请求资源,服务器直接访问目标地址的URL,把那个URL的响应内容读取过来,然后把这些内容再发给浏览器,浏览器根本不知道服务器发送的内容是从哪儿来的,所以它的地址栏中还是原来的地址。还有,转发...

    19.Servlet中forward和redirect的区别.avi

    19.Servlet中forward和redirect的区别.avi

    Java面试题19.forward和redirect的区别.mp4

    Java面试题19.forward和redirect的区别.mp4

    forward与redirect!转发和重定向 解析

    forward与redirect!转发和重定向 解析

    java中dispcter和forward的区别

    dispcter和forward的区别 RequestDispatcher.forward()方法和HttpServletResponse.sendRedirect()方法的区别是:前者仅是容器中控制权的转向,在客户端浏览器地址栏中不会显示出转向后的地址,他是不会改变Request的...

    JAVA面试题之Forward与Redirect的区别详解

    主要给大家介绍了在JAVA面试中可能遇到会遇到的一道题,就是java中Forward与Redirect两者之前的区别,文中介绍的非常详细,对大家具有一定参考学习价值,需要的朋友们下面来一起看看吧。

    struts_actionforward.rar_ActionForward_redirect

    ActionForward的使用 1、理解全局和局部ActionForward的概念 2、redirect的使用 3、struts-config.xml文件不允许动态修改 4、理解动态ActionForward,动态的ActionForward是可以运行期修改的

    springMVC3学习 九 redirect和forward跳转 源码

    springMVC3学习 九 redirect和forward跳转 源码 文章地址http: blog csdn net itmyhome1990 article details 26286669

    jsp forward与redirect实探

    NULL 博文链接:https://dreamzhong.iteye.com/blog/1128006

    直接请求转发(Forward)和间接请求转发(Redirect)两种区别.docx

    用户向服务器发送了一次HTTP请求,该请求肯能会...根据转发方式的不同,可以区分为直接请求转发(Forward)和间接请求转发(Redirect)两种有何区别呢?本篇在回答该问题的同时全面的讲解两种请求转发方式的原理和区别。

    ActionForward和国际化

    详解Struts2的国际化!ActionForward的使用 ActionForward的默认行为是转发,如果想重定向,需要在标签中配置 redirect="true" 比如: <forward name="login" path="/login.jsp" redirect="true"/>

    阿里巴巴校园招聘面试试题合集总结

    1. forward 和 redirect区别 1.从地址栏显示来说 forward是服务器请求资源,服务器直接访问目标地址的URL,把那个URL的响应内容读取过来,然后把这些内容再发给浏览器.浏览器根本不知道服。。。。。。。。。

    大厂面试题知识点讲解汇总

    、bat面试题之线程的实现方式 怎么启动线程怎么区分线程、bat面试题之forward和redirect的区别、bat面试题之内置对象和四大作用域和页面传值、bat面试题之设计模式和常用的设计模式、bat面试题之实现一个拷贝文件的...

    traefik-forward-auth:最小前向身份验证服务,可为traefik反向代理提供基于GoogleOpenID oauth的登录和身份验证

    redirect_uri(请参阅auth-host ) 允许身份验证在多个域中持续存在(请参阅) 支持Google令牌生存期以外的扩展身份验证(请参阅:lifetime )内容发布我们建议在thomseddon/traefik-forward-auth:2 hub上使用2标签...

    java部分试题及答案

    19、forward 和redirect的区别 forward是服务器请求资源,服务器直接访问目标地址的URL,把那个URL的响应内容读取过来,然后把这些内容再发给浏览器,浏览器根本不知道服务器发送的内容是从哪儿来的,所以它的地址栏...

    JAVA基础知识点汇总

    10、Servlet中的forward和redirect有什么区别: Forward是服务器内部的重定向,服务器直接访问目标地址的url,地址不变。 Redirect:客户端的重定向,完全跳转,地址改变。 11、JSP的内置对象: 1)require(请求对象...

    java面试大全视频版

    Java面试题19.Servlet中forward和redirect的区别 Java面试题20.jsp和Servlet的相同点和不同点 Java面试题21.内置对象和四大作用域和页面传值 Java面试题22.Session和Cookie的区别和使用场景 Java面试题23.mvc模式和...

    中软公司JAVA培训资料.doc

    中软公司JAVA培训资料.一、Java语言 1、面向对象的三个基本特征 2、方法重载和方法重写的概念和区别 3、接口和内部类、抽象类的特性 ... ** 2、forward 和redirect的区别 3、JSP的常用指令 三、servlet doc

Global site tag (gtag.js) - Google Analytics