Java学习者论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

手机号码,快捷登录

恭喜Java学习者论坛(https://www.javaxxz.com)已经为数万Java学习者服务超过8年了!积累会员资料超过10000G+
成为本站VIP会员,下载本站10000G+会员资源,购买链接:点击进入购买VIP会员
JAVA高级面试进阶视频教程Java架构师系统进阶VIP课程

分布式高可用全栈开发微服务教程

Go语言视频零基础入门到精通

Java架构师3期(课件+源码)

Java开发全终端实战租房项目视频教程

SpringBoot2.X入门到高级使用教程

大数据培训第六期全套视频教程

深度学习(CNN RNN GAN)算法原理

Java亿级流量电商系统视频教程

互联网架构师视频教程

年薪50万Spark2.0从入门到精通

年薪50万!人工智能学习路线教程

年薪50万!大数据从入门到精通学习路线年薪50万!机器学习入门到精通视频教程
仿小米商城类app和小程序视频教程深度学习数据分析基础到实战最新黑马javaEE2.1就业课程从 0到JVM实战高手教程 MySQL入门到精通教程
查看: 662|回复: 0

JSP页面跳转与请求转发的区别

[复制链接]

该用户从未签到

发表于 2011-10-18 17:09:50 | 显示全部楼层 |阅读模式
JSP页面跳转与请求转发的区别

1、response.sendRedirect(url):指请求重定向,原来页面的参数在这里是得不到的,即用request.getParameter("param")返回的是null;

2、forward表示请求转发,指将原页面的request,response对象传入新的页面,这样新旧页面拥有相同的request和response对象,使用request.getParameter("param")就可以得到相应的值;

3、ServletContext.getRequestDispatcher与 ServletRequest.getRequestDispatcher的区别:

ServletContext.getRequestDispatcher 路径必须是相对上下文的绝对路径

ServletRequest.getRequestDispatcher 可以是相对也可以是绝对

4、注意:使用forward转发后在浏览器上看到的地址栏显示的是转发前的还不是转发后的。比如从test.jsp转发到(forward)good.jsp,那么地址栏显示的是test.jsp.这是因为forward是在服务器端进行的,浏览器根本不知道,而重定向是在客户端进行的,如果使用response.sentRedirect("red.jsp")会直接定向到red.jsp。当我们在jsp页面请求servlet时并在servlet中进行forawrd转发到另一个red.jsp页面,这时地址栏显示的是servlet的名称而不是red.jsp。

服务器端进行转向的4种方法:

1. ServletContext的getRequestDispatcher()

2. ServletContext的getNamedDispatcher()

3. ServletRequest的getRequestDispatcher()

4. ServletResponse的sendRedirect()进行转向。

前三个属于转发第4个是重定向;

建议使用forward方法,因为这些这样比较高效,传递参数较方便,当我们请求一个站外地址时就要使用ServletResponse的sendRedirect()方法了。

<jsp:fordward>与 sendRedirect 方法的比较

相同点:<jsp:fordward>和sendRedirect都可以将浏览器浏览的网页重导至另一个网页;

不同点:

<jsp:fordward>动作是利用伺服端,将资料输出至缓冲区的机制,在前一个网页尚未输出到客户端前,取消资料的输出,然后输出另一个网页的资料,达到重导浏览器的效果,两网页间可以分享 request 对象内的变量。

sendRedirect动作是透过HTTP协议的Header,对浏览器下达重导指令,因此不牵涉到服务器端缓冲区的问题,由于 sendRedirect 方法作用于客户端,所以重导前后网页无法分享存在于request 对象内的变量。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|Java学习者论坛 ( 声明:本站资料整理自互联网,用于Java学习者交流学习使用,对资料版权不负任何法律责任,若有侵权请及时联系客服屏蔽删除 )

GMT+8, 2024-5-11 15:18 , Processed in 0.366631 second(s), 46 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表