首先必须要了解客户端跳转和服务器端跳转的区别:
客户端跳转: response.sendRedict(String path),地址栏发生改变。不能传递request属性。
服务器端跳转:<jsp:forward> 地址栏不发生改变。能传递request属性。
request属性范围: 只有在服务器端跳转以后,所有设置的内容才会停留下来。
session属性范围: 不管是客户端跳转还是服务器端跳转,只要是是属性设置了都可以取得。
1:page:(pageContext)
只在一个页面中保存属性,跳转之后无效;
表示将一个属性设置在本页面上,跳转之后无效;
当通过<jsp:forward>服务器跳转(地址栏不发生改变)之后,属性无法取得!
2:request:
服务器跳转(<jsp:forward>)之后有效;
通过超链接(<a href=""></a>)request设置的属性是无法取得的;
request属性在MVC设计模式中使用比较多。
3:session:
再一次会话范围中,无论何种跳转都可以使用,但是新开的浏览器无法使用;
可以再任何一个与设置页面相关的页面中取得;
在超链接中属性也可以取得(超连接地址栏改变,属于客户端跳转);
每一个新的浏览器连接上服务器后就是一个新的session,所以新开的浏览器中是无法取得session属性的。
4:application:
在整个服务器上保存,所有用户都可以使用;
不管新开多少浏览器application属性均可取得,但是一旦服务器重新启动,则之前设置的属性将全部消失。