共享信息

Web组件,和大多数对象同样,一般与其余对象一块儿完成他们的任务。Web组件实现共享经过下列步骤:java

  • 使用私有帮助对象(例如,JavaBeans组件)
  • 共享公共范围的对象
  • 使用数据库
  • 调用其余web资源。Java Servlet 提供访问其余web资源的机制 Invoking Other Web Resources。

使用范围对象

web组件使用4种范围对象来共享信心。你能够使用表明范围对象的类的getAttribute 和setAttribute方法访问他们的属性。下面的列表列出了4种范围对象:web

Web context

javax.servlet.ServletContext
web上下文的组件。查看 Accessing the Web Context章节。数据库

Session

javax.servlet.http.HttpSession
处理附属于session的相应的web组件。查看Maintaining Client State章节。服务器

Request

javax.servlet.ServletRequest类的子类。
处理请求的web组件。网络

Page

javax.servlet.jsp.JspContext
jsp页面建立的web组件。session

控制对共享资源的并发访问

在一个多线程服务器,共享资源支持并发访问。添加到范围对象中属性,在内存中共享数据,例如实例和变量,和一些扩展对象,如文件、数据库链接、网络链接等。
并发访问发生在下列场景中:多线程

  • 多个web组件访问存储在web上下文中的对象
  • 多个web组件访问村吃在session中的对象
  • 一个web组件多线程访问实例变量。web容器一般给每个请求分配一个线程。这保证了一个Servlet实例在同一时间只能处理一个线程,一个Serlet能够实现SingleThreadModel接口。若是一个Servlet实现了SingleThreadModel接口,将不会有2个线程在程序中并发执行。一个web容器经过同步访问一个Servlet实例或维持一个web组件的实例池并分配到空闲实例中来保证这个实现。这个接口不会防止对web资源访问的同步问题,例如一个静态类变量或外部对象。

当资源能够并发访问,他们有一些共同的使用模式。你能够使用章节 http://docs.oracle.com/javase/tutorial/essential/concurrency/中描述的同步策略来控制并预防多线程访问问题。并发

相关文章
相关标签/搜索