不要仅仅为了把变量传到下一个页面而使用session作用域,那会无故增大变量的作用域,转发也许可以帮助你解决这个问题.
转发:以前的request中存放的变量不会失效,就像把两个页面拼到了一起. 【程序编程相关:AspectJ 开发环境指南 ——Asp】重定向:以前的request中存放的变量全部失效,并进入一个新的request作用域. 【推荐阅读:(转贴)Struts best prac】正文开始: 【扩展信息:架构和框架的关系】
先是看上去不同,他们的调用分别如下:
request.getrequestdispatcher("apage.jsp").forward(request, response);//转发到apage.jspresponse.sendredirect("apage.jsp");//重定向到apage.jsp在jsp页面中你也会看到通过下面的方式实现转发:<jsp:forward page="apage.jsp" />我在初学jsp的时候,对这两个概念非常模糊,看别人的例子的时候,也是一头雾水,不知道什么时候该用哪个.希望下面的解说能对你有所帮助.
提到转发与重定向就不得不提到request作用域.很多初学者都知道当我们提交一个表单时,就创建了一个新的请求.实际上,当我们点击一个链接时,也创建了一个新的请求.那么一个请求的作用于到底有多大呢?例如:
在页面a.jsp中有一个链接<a href="b.jsp?id=1">这是指向b的一个链接,而且还带了一个参数</a>.当我们点击这个连接的时候,就产生了一个请求,为了明确起见,我们把它叫做requesta->b.现在,在b.jsp页面中我们就可以从这个请求中获取信息了.在b.jsp中你可以写入out.pr
intln(request.getparameter("id"))进行测试.下面更复杂一点,我们在b.jsp页面中增加下面的语句:
request.setattribute("name","funcreal");out.println(request.getattriblute("name"));//成功显示了name变量的值.... 下一页