共享信息

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/中描述的同步策略来控制并预防多线程访问问题。

评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

这个站点使用 Akismet 来减少垃圾评论。了解你的评论数据如何被处理