页面跳转与请求转发

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向good.jsp转发了,那么地址栏显示的是test.jsp.这是因为forward是在服务器端进行的,浏览器根本不知道,而重定向是在客户端进行的,所以使用response.sentRedirect("red.jsp")会直接定向到red.jsp。由此想到index.jsp如果请求的是servlet那么在servlet中进行forawrd转发到另一个red.jsp页面,但当查看结果时,在地址栏显示的将只是servlet的名称而不是red.jsp,如果你想知道最终看到的页面的名称那只有查代码了。

reference it:

  1. 服务器端进行转向的4种方法:
  2. 1.ServletContext的getRequestDispatcher()
  3. 2.ServletContext的getNamedDispatcher()
  4. 3.ServletRequest的getRequestDispatcher()
  5. 4.ServletResponse的sendRedirect()进行转向。
  6. 1.2.3=>forward()4.sendRedirect()
  7. 使用forward方法,因为这些这样比较高效。只有在forward方法不能使用时(比如要转向到一个非本web应用),再使用ServletResponse的sendRedirect()方法。
  8. <jsp:fordward>与sendRedirect方法的比较
  9. 虽然<jsp:fordward>与sendRedirect方法,都可以将浏览器浏览的网页,重导至另一个网页,但是两者在原理上是不太相同。
  10. a.<jsp:fordward>:动作是利用伺服端,将资料输出至缓冲区的机制,在前一个网页尚未输出到客户端前,取消资料的输出,然后输出另一个网页的资料,达到重导浏览器的效果。
  11. 优点:两网页间可以分享request对象内的变量。
  12. b.sendRedirect:动作是透过HTTP协议的Header,对浏览器下达重导指令,因此,不牵涉到服务器端缓冲区的问题。
  13. 不过由于sendRedirect方法作用于客户端,所以重导前后网页无法分享存在于request对象内的变量。
  14. Solution:response.sendRedirect(“sendRedirect.htm?name=sparkwu&E-Mail=spark.wu@cobra-tech.com”)

参考链接:http://www.family168.com/tutorial/jsp/html/jsp-ch-03.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值