PortletContext 接口提供了一大堆方法用于访问Portlet的环境,包括Portlet应用和Portlet容器。这里,Portlet应用本质上是一个web应用,所以它委托servlet容器帮它所有的组件

 

  1. public abstract interface PortletContext 
  2.   public abstract String getServerInfo(); 
  3.  
  4.   public abstract PortletRequestDispatcher getRequestDispatcher(String paramString); 
  5.  
  6.   public abstract PortletRequestDispatcher getNamedDispatcher(String paramString); 
  7.  
  8.   public abstract InputStream getResourceAsStream(String paramString); 
  9.  
  10.   public abstract int getMajorVersion(); 
  11.  
  12.   public abstract int getMinorVersion(); 
  13.  
  14. //根据文件名获取这个文件名对应的文件的MIME类型
  15.   public abstract String getMimeType(String paramString); 
  16.  
  17.   public abstract String getRealPath(String paramString); 
  18.  
  19.   public abstract Set<String> getResourcePaths(String paramString); 
  20.  
  21.   public abstract URL getResource(String paramString) 
  22.     throws MalformedURLException; 
  23.  
  24.   public abstract Object getAttribute(String paramString); 
  25.  
  26.   public abstract Enumeration<String> getAttributeNames(); 
  27.  
  28. //这些参数配置在web.xml中的<context-param>中,并且一个Portlet应用中的所有Portlet都可以share
  29. 、//但是在portlet.xml中的<init-param>,则只有对应的某个Portlet可以用。
     
  30.   public abstract String getInitParameter(String paramString); 
  31.  
  32.   public abstract Enumeration<String> getInitParameterNames(); 
  33.  
  34.   public abstract void log(String paramString); 
  35.  
  36.   public abstract void log(String paramString, Throwable paramThrowable); 
  37.  
  38. //这几个用于添加/删除portletContext上的属性,这些属性只要在这个Portlet应用里面的任何资源(servlet,jsp,class都可以用)
     
  39.   public abstract void removeAttribute(String paramString); 
  40.  
  41.   public abstract void setAttribute(String paramString, Object paramObject); 
  42.  
  43.   public abstract String getPortletContextName(); 
  44.  
    //这些运行时选项是Portlet容器相关的选项,他们的值也配置在portlet.xml中
  45. //比如:
    <container-runtime-option>      <name>com.ibm.portal.public.session</name>      <value>true</value>    </container-runtime-option>
  46.   public abstract Enumeration<String> getContainerRuntimeOptions(); 

 

PortletContext 和 ServletContext

这两个作用域上的所有变量都是相互可见的,并且这些变量都适用于ServletContext的几个监听器方法:

ServletContextListener

ServletContextAttributeListener

 

他们彼此也是“唇亡齿寒”的关系,一个被servlet容器摧毁,则另外一个也被portlet容器摧毁