posts - 89,  comments - 98,  trackbacks - 0
2006年3月31日17:55:31

对于重定向技术以前感觉是比较简单的东西,后来在做东西的过程中发现其实里面还是有很多技巧的!

首先我们先比较一下:response.sendRedirect()和RequestDispatcher.forward()方法的使用情况

   response.sendRedirect()方法:因为response是JSP的内含对象,因此它可以直接使用,而在Servlet当中它则是HttpServletResponse或是ServletResponse.

   sendRedirect()方法是可以实现浏览器的http地址的跳转,它同样可以实现带有frame框架的地址的跳转。而forward()方法则不能完成这种带frame框架的地址的跳转。sendRedirect()方法的重定向可以显示在浏览器的地址栏当中,而forward()则不能。

   sendRecirect()不仅可以实现frame的跳转,也可以实现跨网站跨应用程序的跳转。它能够传递带查询参数的变量及值,但是却不能够记录请求前页存的Request.setAttribute()当中的值。因此如果用sendRedirect()方法进行了跳转后的页面,没有记忆功能,但是session中的值可以得到。而forward()就具有记录属性值的功能,跳转后的页面可以取得前一页中保存的值。

   forward()方法也可以传递查询参数及值。但是<jsp:forward>则不能传递查询参数,如果要实现查询参数则必须嵌套<jsp:param name="name" value="value">来完成

   通过用<jsp:param>来传递查询参数,它不会显示在浏览器的地址栏当中,因此比response.sendRedirect()要安全一些

posted on 2006-03-31 18:12 水煮三国 阅读(758) 评论(1)  编辑  收藏 所属分类: J2EE

FeedBack:
# re: JSP及Servlet当中的重定向技巧
2008-05-25 15:20 | 流浪人
文中你提到“forward()就具有记录属性值的功能,跳转后的页面可以取得前一页中保存的值。”
而在后边你又提到“forward()方法也可以传递查询参数及值。但是<jsp:forward>则不能传递查询参数,如果要实现查询参数则必须嵌套<jsp:param name="name" value="value">来完成”
这2句话不矛盾吗?
与其这样说 是不是 说forward()在某些条件之外都可以传递参数和值更好????


  回复  更多评论
  

只有注册用户登录后才能发表评论。


网站导航:
 
<2008年5月>
27282930123
45678910
11121314151617
18192021222324
25262728293031
1234567

常用链接

留言簿(4)

随笔分类(85)

随笔档案(89)

文章分类(14)

文章档案(42)

收藏夹(37)

java

oracle

Sybase

搜索

  •  

积分与排名

  • 积分 - 209198
  • 排名 - 267

最新评论

阅读排行榜

评论排行榜