当页面发生请求后拦截器intercepter创建值栈valuestack,并初始化。valuestack中包含map和stack:map初始化后一般包含request,response,appalication,attrribute,parameter,等;stack初始化后包含action和另外一个对象。
拦截器modelDriven 封装model,params封装参数。将属性放入model中的属性,如果在model中找不到该属性则放入map中的parameters中。
值的获取:在jsp中通过ognl获取;在action中通过ActionContext.getContext().getValueStack()获取。
ognl的格式:在struts.xml中${};在jsp中%{}只能写到Struts自定义标签中
语法:user:相当于findValue("user")
#user:相当于map.get("user")
在值栈中findValue()在栈顶按指定的名称往下查找,如果找到后就返回,没找到则从map中查找key,再返回相应的值。
el表达式:当使用Struts后不再使用以前的request而是使用封装后的request,(在Struts中封装的request:request中没有找到值,再从findvalue)