程序员人生 网站导航

【Web】ServletContext与ServletConfig

栏目:htmlcss时间:2015-05-28 08:34:19


       在Servlet相干的对象中还有1个ServletContext对象,很多时候我们分不清楚1些长得像的东东,是由于我们不了解它们的来历.消除疑惑,我们先来看看这个对象是甚么时候产生的.

 

        先来看个简单的图:


            


        容器启动1个Web利用时为之创建ServletContext对象,每一个Web利用都有唯1的ServletContext对象,它相当于Servlet们与容器通讯的接口,管理访问容器的各种资源.,Web利用范围内同享数据,访问当前Web利用的资源,访问容器中的其它利用,访问服务器真个文件系统资源等.

 

        而ServletConfig,也用1张简单的图来表示下:


            


        容器启动Web利用也就是创建完ServletContext,初始化所有的Filter,对需要启动时就初始化的Servlet进行初始化.对当前不要求初始化的Servlet在要求时初始化.在初始化1个Servlet对象时,创建1个ServletConfig对象,容器调用Servlet的初始化方法时会把包括这个Servlet的初始化参数信息的ServletConfig对象当作参数传进去.

 

       可见,ServletConfigServletContext根本是在不同的时间,由于不同的情况才产生的.下面这张图更清楚地反应了这1前后顺序.


             


        而且,我们还可以看出这里有1个Web利用,1个ServletContext,却有不止1个ServletServletConfig.这说明了甚么呢?

 

           ServletContext能够在Web利用范围内活动,Web利用范围是甚么意思呢?第1,表示由Web利用的生命周期构成的时间段.第2,表示在Web利用的生命周期内所有Web组件的集合.

 

        ServletConfig可以在特定Servlet范围内活动,这么说,从该Servlet实例化ServletConfig就随着它,其它Servlet访问不到这个ServletConfig.

 

        想一想我们之前在web.xml中的配置,有<context-param> 和<servlet>两个元素.如果1个参数要在全部Web利用中用呢,就写在<context-param> 节点下,如果只在1个Servlet中用呢,就写在<servlet>节点中.回想下.


<context-param> <param-name>contextConfigLocation</param-name> <param-value>classpath*:config/applicationContext-common.xml</param-value> </context-param>



<servlet> <servlet-name>action</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <init-param> <param-name>contextConfigLocation</param-name> <param-value>/WEB-INF/spring-mvc.xml,classpath:config/applicationContext-common.xml</param-value> </init-param> </servlet>



------分隔线----------------------------
------分隔线----------------------------

最新技术推荐