1.首先struts2为我们定义了几个可以在ftl中使用的变量,都放在了org.apache.struts2.views.util.ContextUtil里面,具体怎么做的,还没有看。
- public static final String REQUEST = "request";
 
 
- public static final String REQUEST2 = "request";
 
 
- public static final String RESPONSE = "response";
 
 
- public static final String RESPONSE2 = "response";
 
 
- public static final String SESSION = "session";
 
 
- public static final String BASE = "base";
 
 
- public static final String STACK = "stack";
 
 
- public static final String OGNL = "ognl";
 
 
- public static final String STRUTS = "struts";
 
 
- public static final String ACTION = "action";
这里定义了我们常用的${base}、${stack}等。
 注意:这里面定义都是对应的类。例如stack对应的就是ValueStack,所以我们在页面可以使用
 ${stack.findValue('@com.Blog@PERMIT_COMMENT_BY_NONE')}.这就是方法问ValueStack的findValue方法。我们还可以使用
 ${request}来使用HttpServletRequest类,(只能)然后调用里面的方法。例如${request.getAttribute("aaa")}等。 
 2.通过使用struts2我们知道,页面传递过来的值都是保存在ActionContext中的值栈里面的,其中这个值栈是ActionContext 的根,因此可以不用加“#”访问。而在ActionContext中还封存了其他的东西,比如request,session、parameters 等。。但是一定要注意。这里的request、session、parameters等不是HttpServletRequest那些类,而是一个 map。而且进行了重新组装,例如request封装了 ServletActionContext.getRequest().setAttribute("aaa", "bbb");信息
 我们通过Ognl.getValue("#request.aaa", map, context.getValueStack().getRoot())就可以取到值。当然request这个map中还有一些其他的东西,例如我的打印结果是;
 System.out.println(Ognl.getValue("#request", context.getContextMap(),new Object()));通过打印可以看出来
 这些可以参考
 http://hi.baidu.com/maml897/blog/item/e6d962c3d55e6338e5dd3bb0.html。 
 3.我们知道 ftl页面 ${}写的都是 ognl表达式,而且都是 根里面的 ,所以不用加上“#”,但是 要访问ActionContext里面,不是根的request怎么办呢?
 我是这样用的 ${#request}发现时错误的,后来查找资料发现
 使用
 ${Request["a"]}
 ${RequestParameters["a"]}
 ${Session ["a"]}
 ${Application  ["a"]}
 或者${Application.myApplicationAttribute}
 ${Session.mySessionAttribute}
 ${Request.myRequestAttribute}
 ${Parameters.myParameter}
 千万要注意的是
 Application、Session、Request、Parameters都是map。都是大写的,没有写成${#request}这个我也不知道为什么,
 在页面 用了大写。
 可以参考freemarker.ext.servlet.FreemarkerServlet
 在action里使用
 System.out.println(Ognl.getValue("#request.aaa", map, context.getValueStack().getRoot())); 
 刚才发现 在jsp页面里访问 actionContext的内容
 ${request}
 这样写 是访问actionContext的request,而不是 struts2内定的
 用struts2标签
 <x:property value="#request.toString()"/>
 就要加"#"