一、类型不同
1、page是baiObject类型
2、request是HttpservletRequest类型
3、session是HttpSession类型
4、application是ServletContext类型
二、作用范围不同
1、page:
只在当前页面传递参数,在一个jsp页面里有效 。page里的变量没法从index.jsp传递到test.jsp,只要页面跳转了,它就失效了。
2、request:
请求作用域,客户端的一次请求。生命周期为一次请求或使用forward方式执行请求转发,也就是使用forward方式跳转多个jsp,在这些页面里你都可以使用这个变量。但是只要刷新页面,这个变量就失效了。
3、session:
作用域为当前会话,从浏览器打开到关闭整个过程。即从打开页面后,各个jsp文件间可以相互进行数据通信。当用户首次访问时,产生一个新的会话,以后服务器就可以记住这个会话状态。生命周期为会话超时或者服务器端强制使会话失效。简单的说就是从浏览器打开到浏览器关闭这个过程中有效。在此过程中session里的变 量一直在累加,开始还看不出区别,只要关闭浏览器,再次重启浏览器访问这页,session里的变量就重新计算了。
4、application:
全局作用范围,作用域最大,即使关闭浏览器application的数据请求依然存在。整个应用程序共享,生命周期为从应用程序启动到停止,在这个过程中application里的变量一直在累加,除非你重启tomcat或是人工删除,否则它会一直变大。