OGNL在应用上跟EL比较相似,所以,有些同学可能会混淆,其实他们并没有关系的,只是用法上比较相似而已,首先来介绍一下他们的应用之处。
①OGNL(对象视图导航语言)是Object-Graph NavigationLanguage的缩写。
②OGNL表达式作用:
表达式:使用简洁的表达式完成复杂的功能。
③先说说OGNL相比EL的优点吧:
能够访问对象的普通方法
能够访问类的静态属性和静态方法
强大的操作集合类对象的能力
支持赋值操作和表达式串联
访问OGNL上下文和ActionContext(最重要的)
④action和ActionContext的理解:
你有10本书,今天上午要上java课,你去上课应该就是只带java书籍,应该不会把其他书带着,那么这本书就是小数据,另外9本就是大数据(不是云计算那个大数据),action就相当于小数据,ActionContext就相当于大数据。
action也叫跟对象或者root对象,如果想要取值,可以通过“name”直接取值,如果是actionContext则必须在前面加#号
public static void main(String[]args) throws OgnlException {
//原则:数据分为两类---常用的和不常用的
//表达式:常用的直接取,不常用的加#取
Map map =new HashMap();
map.put("name","张三");
map.put("age",125);
User user = new User();
user.setName("李四");
user.setPassword("123456");
Object name = Ognl.getValue("name",map, user);
System.out.println(name);
}
打印输出:李四 (记得导入ognl的jar包,我用的3.0版本的),否则没有getValue方法
因为张三是存在map中的,而此时这个map是一个大数据,如果要取,需在name前加#
actionContext中包含着几大对象:
ValueStack(值栈),遵循先进后出的原则,里面存放的是action。