javax.servlet.ServletContext和javax.naming.Context之间的区别

时间:2013-03-28 02:51:24

标签: java servlets

据我所知,Java ServletContext和Context Objects在Java EE程序开发中很常用。但是,我不太确定它们之间有什么区别,尤其是Context Class的用法。

根据我的理解,ServletContext是Object,它包含从Web.xml读取的所有初始化,以便Web应用程序中的所有servlet可以共享这些全局配置。

另一方面,当我需要使用JNDI查找动态建立数据库连接时,我通常只使用Context Object。除此之外,我还不清楚这门课的其他可能用法。

我主要担心的是ServletContext和Context类的“context”字是否代表Web应用程序中的相同内容或组件?

1 个答案:

答案 0 :(得分:3)

来自ServletContext javadoc

  

定义servlet用于与其通信的一组方法   servlet容器,例如,获取文件的MIME类型,   发送请求,或写入日志文件。

基本上它是servlet环境的访问者。任何与servlet相关的东西,你都可以从那里得到它。它实际上只对Servlet容器有用。

JNDI Context javadoc

  

此接口表示命名上下文,其中包含一组   名称到对象的绑定。它包含检查和的方法   更新这些绑定。

这是资源的接口。您可以使用某个标识符配置资源,您可以通过此接口检索该标识符。您不仅限于在Servlet容器中使用它。例如,您可以在网络中的LDAP存储库中存储已连接设备的列表。要访问此存储库,您可以编写实现协议并与LDAP服务器交互的自定义​​代码,也可以使用实现Context类的LdapContext类。或者,您可以使用它来查找JDBC DataSource

不要让他们有同名的事实打扰你。他们有不同的目标。

当您在不同的背景下看到Context时,

This answer可能会有所帮助。