Merge pull request #201 from apache/feature/accessing-scopes

Updates how to access scopes
diff --git a/source/core-developers/accessing-application-session-request-objects.md b/source/core-developers/accessing-application-session-request-objects.md
index 0988e02..774d1cf 100644
--- a/source/core-developers/accessing-application-session-request-objects.md
+++ b/source/core-developers/accessing-application-session-request-objects.md
@@ -7,45 +7,55 @@
 ---
 
 # Accessing application, session, request objects
+{:.no_toc}
 
-**DEPRECATED???**
+* Will be replaced with the ToC, excluding a header
+{:toc}
 
-The framework provides several access helpers to access Session, Application, Request scopes.
+The framework provides several access helpers to access Request, Session, Application scopes.
+See [Servlet Config Interceptor](servlet-config-interceptor) page to find all the supported interfaces.
 
 ## Accessing from Java
 
-All the JEE scope attribute maps can be accessed via `ActionContext`.
+The best way to access Request, Session or Application scope is to use one of the following interfaces:
+- `ServletRequestAware` - to access Request scope
+- `ServletResponseAware` - to access Response scope
+- `SessionAware` - to access Session scope
+- `ApplicationAware` - to access Application scope
 
-**Accessing servlet scopes**
+Example usage of the interfaces:
 
 ```java
-Map attr = (Map) ActionContext.getContext().get("attr");
-attr.put("myId", myProp);  // Page scope.
+public class MyAction implements ApplicationAware {
+ 
+    private Map<String, Object> application;
 
-Map application = (Map) ActionContext.getContext().get("application");
-application.put("myId", myProp);
-
-Map session = (Map) ActionContext.getContext().get("session");
-session.put("myId", myProp);
-
-Map request = (Map) ActionContext.getContext().get("request");
-request.put("myId", myProp);
+    public void withApplication(Map<String, Object> application) {
+        this.application = application;
+    }
+    
+    public String execute() {
+        application.set("myKey", "myValue");
+        ...
+        return "success";
+    }
+    
+}
 ```
 
-> Do not use `ActionContext.getContext()` in the constructor of your Action class. The values may not be set up, and 
-> the call may return null for getSession().
+Implementing `ServletRequestAware` or `ServletResponseAware` will tie your actions to Servlet objects. Yet using these 
+interfaces and `SessionAware` or `ApplicationAware` combined with the `servletConfig` interceptor, is the best way 
+to access these scopes.
 
-We can also access the `HttpServletRequest` and `HttpServletResponse` objects themselves through `ServletActionContext`. 
-In general this isn't recommended as it will tie our action to the servlet specification.
+### Avoid using ActionContext
 
-**Setting session attribute through session object**
+Using `ActionContext` directly is a bad practice and should be avoided, instead of using 
 
 ```java
-ServletActionContext.getRequest().getSession().put("myId", myProp);
+ActionContext.getContext().getSession().put("myAttribute", "myValue");
 ```
 
-Implementing `ServletRequestAware` or `ServletResponseAware`, combined with the `servletConfig` interceptor, 
-is an alternative way to access the request and response objects, with the same caveat.
+use one of the `*Aware` interfaces above.
 
 ## Accessing from the view (JSP, FreeMarker, etc.)