在Action中获取servletContext的时候可以通过
this.getServlet().getServletContext();方式获取
也可以同requset.getSession().getServletContext();
这两种方式有什么区别吗,为什么从Session对象中也可以获取servletContext对象呢?
谢谢

解决方案 »

  1.   

    1action 中获取 actionServlet 然后这个sevlet可以获取她所在的servletContext
    2根据session获取当前session所属的servletContext
    不同步骤,达到相同效果
      

  2.   

    楼主是没有没有吧servletContext理解透对于web容器来说,ServletContext接口定义了一个servlet环境对象,这个对象定义了一个在servlet引擎上的servlet的视图。通过使用这个对象,servlet可以记录事件,得到资源并得到来自servlet的引擎类。
    servlet容器在启动时会加载web应用,并为每个web应用创建唯一的servlet context对象,可以把ServletContext看成是一个Web应用的服务器端组件的共享内存,在ServletContext中可以存放共享数据,他提供了4个读取和设置共享数据的方法。具体见api帮助文档。
    另外,ServletContext对象只在web应用被关闭的时候才被销毁,不同的web应用,ServletContext各自独立存在。
    一个web应用由jsp,servlet,javabean等web组件的集合构成,每一个web应用,容器都会有一个背景对象,而javax.servlet.ServletContext接口就提供了访问这个背景对象的途径。你可以通过一个servlet实例的getServletContext()方法得到该servlet运行其中的这个背景对象,从这个背景对象中你可以访问如下信息资源:
    1.初始化参数
    2.存储在背景中的对象
    3.与背景关联的资源
    4.日志
    最后针对ServletContext我自己的总结是:
    ServletContext即servlet容器,其内提供的方法可以在同一web应用下的所有servlet中被使用上面的获取方法其实最后都是通过一个servlet实例的getServletContext()方法获取的,只是实现了自己的封装
      

  3.   

    楼主是没有没有吧servletContext理解透 对于web容器来说,ServletContext接口定义了一个servlet环境对象,这个对象定义了一个在servlet引擎上的servlet的视图。通过使用这个对象,servlet可以记录事件,得到资源并得到来自servlet的引擎类。 
    servlet容器在启动时会加载web应用,并为每个web应用创建唯一的servlet context对象,可以把ServletContext看成是一个Web应用的服务器端组件的共享内存,在ServletContext中可以存放共享数据,他提供了4个读取和设置共享数据的方法。具体见api帮助文档。 
    另外,ServletContext对象只在web应用被关闭的时候才被销毁,不同的web应用,ServletContext各自独立存在。 
    一个web应用由jsp,servlet,javabean等web组件的集合构成,每一个web应用,容器都会有一个背景对象,而javax.servlet.ServletContext接口就提供了访问这个背景对象的途径。你可以通过一个servlet实例的getServletContext()方法得到该servlet运行其中的这个背景对象,从这个背景对象中你可以访问如下信息资源: 
    1.初始化参数 
    2.存储在背景中的对象 
    3.与背景关联的资源 
    4.日志 
    最后针对ServletContext我自己的总结是: 
    ServletContext即servlet容器,其内提供的方法可以在同一web应用下的所有servlet中被使用 上面的获取方法其实最后都是通过一个servlet实例的getServletContext()方法获取的,只是实现了自己的封装