ValueStack:struts2的一个存放数据的数据结构(核心)

ValueStack大致能够理解为:由Map和对象栈组成

ValueStack作用范围:一个请求,用它来取代request的作用域。

当来了一个请求时,便创建出一个ValueStack,并进行一些初始化。

往Map中放:request=...,session=...,application=...,attr=...,parameters=...。等等

往对象栈中放:action和还有一个默认对象

拦截器:ModelDriven

作用:把model放在对象栈栈顶,

參数拦截器:params

作用:封装參数,把參数封装到对象栈中,会先封装到对象栈中的属性里(一找到同样属性就封装)

Action里怎么用ValueStack:ActionContext.getContext().getValueStack()

JSP里怎么用ValueStack:OGNL表达式

调用ValueStack

1.调用map:

ActionContext.getContext().put(k,v);//将一组对象存入map

ActionContext.getContext().get(k);//通过key拿到value

2.调用对象栈:

ActionContext.getContext().getValueStack().push(obj);//将obj放到栈顶

ActionContext.getContext().getValueStack().pop();//拿到栈顶对象



OGNL表达式

格式:

在struts.xml中,OGNL的格式为:${ognl}

在JSP中,OGNL的格式为:%{ognl}

语法:

user  = findValue("user")//先找对象栈,再找map,一找到就返回

#user = map.get("user")//直接从map中获取

#user.name = map.get("user").getName()





findValue(expr)的查找顺序

1.从对象栈中查找指定名称的属性,从栈顶開始向下找,找到后就返回。

2.假设从对象栈中没有找到属性,则从map中查找相应的key值,找到后就返回。

EL表达式(struts中):

作用域查找顺序:page,request。ValueStack.findValue(),session,application

struts2的总体回想(ACTION、拦截器、值栈、OGNL表达式、ModelDriven方案等)的更多相关文章

  1. Struts2的整体回顾(Action, 拦截器, 值栈, OGNL表示式, ModelDriven)

    ValueStack里有map(request, session, attr, parameters)和对象栈. Map调用的方法: ActionContext.getContext().put(k, ...

  2. struts2 javaweb 过滤器、监听器 拦截器 原理

    转: 过滤器.监听器 拦截器 过滤器 创建一个 Filter 只需两个步骤: (1)创建 Filter 处理类: (2)在 web.xml 文件中配置 Filter . 创建 Filter 必须实现 ...

  3. ASP.NET MVC的Action拦截器(过滤器)ActionFilter

    有时项目要进行客户端请求(action)进行拦截(过滤)验证等业务,可以使用拦截器进行实现,所谓的action拦截器也没有什么的,只是写一个类,继承另一个类(System.Web.Mvc.Filter ...

  4. MVC 在action拦截器中获取当前进入的控制器和aciton名

    我们在实现了action拦截器以后(继承至System.Web.Mvc.IActionFilter),需要在重写的方法OnActionExecuting中去获得当前进入的控制器和action名称,如何 ...

  5. [原创]java WEB学习笔记74:Struts2 学习之路--自定义拦截器,struts内建的拦截器

    本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱 ...

  6. Struts2学习第四天——拦截器及文件上传

    1.概述 Struts2的很多核心功能都是由拦截器完成的. 拦截器很好的实现了AOP的编程思想,在动作的执行之前和结果的返回之后,做拦截处理. 2.struts2的默认拦截器栈 3.自定义拦截器 St ...

  7. Struts2学习第4天--拦截器

    第1章     Struts2_day04笔记 1.1      上次课内容回顾 l  OGNL表达式 n  OGNL的概述 u  OGNL:对象图导航语言,是一门功能强大的表达式语言. n  OGN ...

  8. EntityFramework6.0的Sql读写分离拦截器 和 MVC的 Action拦截器 对比

    EF的DbCommandInterceptor类 拦截: EF6.1也出来不少日子了,6.1相比6.0有个很大的特点就是新增了System.Data.Entity.Infrastructure.Int ...

  9. struts2复习(五)拦截器总结

    1. 拦截器(Interceptor): 拦截器是Struts2的核心,Struts2的众多功能都是通过拦截器来实现的. 2. 拦截器的配置 1)编写实现Interceptor 接口的类.  2)在s ...

随机推荐

  1. 数组有没有 length()这个方法? String 有没有 length()这 个方法?

    1.数组中有length属性. 2.String有lenth()方法.

  2. hibernate -inverse

    one to many inverse=false只能设置维护关联关系的多的一方, inverse属性: 默认为false,表示本方维护关联关系. 如果为true,表示本方不维护关联关系(并不意味着对 ...

  3. c++ 深浅拷贝

    对于普通类型的对象来说,它们之间的复制是很简单的,例如:int a=88;int b=a;而类对象与普通对象不同,类对象内部结构一般较为复杂,存在各种成员变量.下面看一个类对象拷贝的简单例子. #in ...

  4. Cloudera Manager Service Monitor 定期挂掉问题排查

    显示:查询 Service Monitor 时发生内部错误(Error sending messages to firehose: mgmt-SERVICEMONITOR-) 1.初步排查出是smon ...

  5. InputStream和OutputStream 何时使用

    原文引自:http://blog.csdn.net/fyxxq/article/details/7071978 记得刚学习程序流一章的时候,就是搞不清楚In和Out,不知道什么时候用in什么时候用ou ...

  6. .net 基础错误-string.replace 方法

    1.string string.Replace(string oldValue,string newValue) 返回一个新的字符串,其中当前示例中出现的所有指定字符串都替换另一个指定字符串 错误:总 ...

  7. JS 寻找孩子并打印路径

    <!doctype html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  8. 帝国cms7.0调用指定栏目,指定顺序排列

    [e:loop={"select * from {$dbtbpre}enewsclass where classid in (82,83,86,87,88,89,90,91,93) orde ...

  9. sed(查找替换) 与awk(提取字段)

    通常: sed 处理列  awk处理行 比较方便 Sed是一个基本的查找替换程序     sed -i   "s/^@//g"     文件  #原地操作原文件,进行替换 cat ...

  10. 数据结构之后缀数组suffix array

    在字符串处理当中,后缀树和后缀数组都是非常有力的工具,其中后缀树大家了解得比较多,关于后缀数组则很少见于国内的资料.其实后缀是后缀树的一个非常精巧的替代品,它比后缀树容易编程实现,能够实现后缀树的很多 ...