JSP的作用域一般是对于变量而言的,描述的是变量在某处是否有效(可用)
名称 | 作用域 |
page | 当前页面有效 |
request | 当前请求中有效 |
session | 当前会话有效 |
application | 整个项目应用中有效 |
1.第一个作用域是page,只在当前页面有效。也就是用户请求的页面有效,当当前页面关闭或转到其他页面时,page对象将在响应回馈给客户端后释放。
2.第二个作用域是request,在当前请求中有效。request可以通过setAttribute()和getAttribute方法存取值实现页面中的信息传递,也可以通过forward()方法进行页面间的跳转(需要注意的是request是转发不是重定向,转发相对于浏览器来说是透明的,也就是无论页面如何跳转,地址栏上显示的依旧是最初的地址,浏览器感知不到),在这些转发页面中都可以使用request中存储的信息。
3.第三个作用域是session,在当前会话中有效。当一个台电脑上的同一浏览器对服务器进行多次访问时,在这多次访问之间传递的信息就是session作用域的范围。它从浏览器发出第一个HTTP请求即可认为会话开始,在浏览器关闭时结束会话,但是会话结束的时间是不确定的,因为在浏览器关闭时并不会通知服务器,一般Tomcat设置的默认时间为120分钟,也可以通过setMaxInactiveInterval(int)方法进行设置,或是通过invalidate()方法强制结束当前会话。session也可以通过setAttribute赋值和getAttribute取值。
4.第四个作用域是application,在整个项目的应用程序中都有效。也就是当服务器开始到服务器结束这段时间,application作用域中存储的数据都是有效的,同样可以通过setAttribute赋值和getAttribute取值。要注意application里的变量可以被所有用户共用,当一个用户对application中的变量做了修改,其他用户再访问的是修改后的值。