在OGNL的使用中,需要访问一系列的对象,这些对象放在OGNL的context中,context是一个Map结构,实际上它和ActionContext是相应的。
当用户发送请求时,struts会创建ActionContext、ValueStack、action对象,action对象放在ValueStack对象中,ValueStatck放在ActionContext中。
其中,ValusStack是OGNL的context对象的根对象。因此在JSP页面访问ValueStack内的属性时不需要“#”,而访问context的其他属性(如request)时必须使用“#”。
context除了ValueStack对象以外,还有以下对象:
- Parameters:用于访问HTTP请求参数,如#parameters['id']或#parameters.id,相当于HttpServletRequest.getParameter()方法。
- Request:用于访问HTTP请求属性,如#request['user']或#request.user,相当于HttpServletRequest.getAttribute()方法。
- Session:用于访问session属性。如:#session['user']或#session.user,,相当于HttpSession.getAttribute()方法。
- Application:用于访问application属性。#application['user']或#application.user,,相当于ServletContext.getAttribute()方法。
- Attr:比如直接获取user属性“#user”,如果PageContext可用,则访问PageContext,否则一次搜索request、session、application对象。