Web组件,和大多数对象一样,通常与其他对象一起完成他们的任务。Web组件实现共享通过下列步骤:
- 使用私有帮助对象(例如,JavaBeans组件)
- 共享公共范围的对象
- 使用数据库
- 调用其他web资源。Java Servlet 提供访问其他web资源的机制 Invoking Other Web Resources。
使用范围对象
web组件使用4种范围对象来共享信心。你可以使用代表范围对象的类的getAttribute 和setAttribute方法访问他们的属性。下面的列表列出了4种范围对象:
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组件。
控制对共享资源的并发访问
在一个多线程服务器,共享资源支持并发访问。添加到范围对象中属性,在内存中共享数据,例如实例和变量,和一些扩展对象,如文件、数据库连接、网络连接等。
并发访问发生在下列场景中:
- 多个web组件访问存储在web上下文中的对象
- 多个web组件访问村吃在session中的对象
- 一个web组件多线程访问实例变量。web容器通常给每一个请求分配一个线程。这保证了一个Servlet实例在同一时间只能处理一个线程,一个Serlet可以实现SingleThreadModel接口。如果一个Servlet实现了SingleThreadModel接口,将不会有2个线程在程序中并发执行。一个web容器通过同步访问一个Servlet实例或维持一个web组件的实例池并分配到空闲实例中来保证这个实现。这个接口不会防止对web资源访问的同步问题,例如一个静态类变量或外部对象。
当资源可以并发访问,他们有一些共同的使用模式。你可以使用章节 http://docs.oracle.com/javase/tutorial/essential/concurrency/
中描述的同步策略来控制并预防多线程访问问题。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。