JSP的作用域

Web应用中,JSP创建的对象有一定的生命周期,也有可能被其他组件或者对象访问。对象的声明周期和可访问性称为作用域(scope)。有些时候,比如下一节讨论的内置对象的作用域一旦设置是不能修改的。对于其他的对象(如JavaBean),可以设置它的作用域。下面有4种类型的作用域:

◆页面域(Page scope):这个作用域是最严格的。页面域的对象只对于它所在页面是可访问的。页面域的JavaBean和脚本程序创建的对象都是线程安全的。(回顾前面的知识点,由声明元素创建的Java对象不是线程安全的)。

◆请求域(Request scope):请求域的对象是在相应请求的生命周期内有效。也就是说,对象在创建它的页面内有效,以及请求被转发或者被包含的页面内有效。请求域的对象是线程安全的。只有相应请求的执行线程可以访问这些对象。

◆会话域(Session scope):会话域的对象,对于参与某个客户端会话的所有应用组件是有效的。这类对象不是线程安全的。如果有多个请求同时访问同一个会话(Session)对象,那么需要对此对象进行同步访问。

◆应用域(Application scope):这是最宽泛的作用域。应用域的对象在应用的整个生命周期内都是有效的。这类对象不是线程安全的,如果多个请求试图同时修改某一个对象,那么必须对这些访问进行同步处理。

在开发Web应用的组件时需要仔细考虑这些对象的作用域,按照对象的需要赋予它们适合的作用域,不要过大也不要过小。如果为一个只在组件内使用的对象赋予了应用域,这样显然毫无意义。同样,如果访问对象具有太多的限制,那么会使应用变得更加复杂。因此需要仔细权衡每个对象及其用途,从而准确推断它的作用域。

你可能感兴趣的:(Web,jsp,脚本)