struts2的总体回想(ACTION、拦截器、值栈、OGNL表达式、ModelDriven方案等)
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方案等)的更多相关文章
- Struts2的整体回顾(Action, 拦截器, 值栈, OGNL表示式, ModelDriven)
ValueStack里有map(request, session, attr, parameters)和对象栈. Map调用的方法: ActionContext.getContext().put(k, ...
- struts2 javaweb 过滤器、监听器 拦截器 原理
转: 过滤器.监听器 拦截器 过滤器 创建一个 Filter 只需两个步骤: (1)创建 Filter 处理类: (2)在 web.xml 文件中配置 Filter . 创建 Filter 必须实现 ...
- ASP.NET MVC的Action拦截器(过滤器)ActionFilter
有时项目要进行客户端请求(action)进行拦截(过滤)验证等业务,可以使用拦截器进行实现,所谓的action拦截器也没有什么的,只是写一个类,继承另一个类(System.Web.Mvc.Filter ...
- MVC 在action拦截器中获取当前进入的控制器和aciton名
我们在实现了action拦截器以后(继承至System.Web.Mvc.IActionFilter),需要在重写的方法OnActionExecuting中去获得当前进入的控制器和action名称,如何 ...
- [原创]java WEB学习笔记74:Struts2 学习之路--自定义拦截器,struts内建的拦截器
本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱 ...
- Struts2学习第四天——拦截器及文件上传
1.概述 Struts2的很多核心功能都是由拦截器完成的. 拦截器很好的实现了AOP的编程思想,在动作的执行之前和结果的返回之后,做拦截处理. 2.struts2的默认拦截器栈 3.自定义拦截器 St ...
- Struts2学习第4天--拦截器
第1章 Struts2_day04笔记 1.1 上次课内容回顾 l OGNL表达式 n OGNL的概述 u OGNL:对象图导航语言,是一门功能强大的表达式语言. n OGN ...
- EntityFramework6.0的Sql读写分离拦截器 和 MVC的 Action拦截器 对比
EF的DbCommandInterceptor类 拦截: EF6.1也出来不少日子了,6.1相比6.0有个很大的特点就是新增了System.Data.Entity.Infrastructure.Int ...
- struts2复习(五)拦截器总结
1. 拦截器(Interceptor): 拦截器是Struts2的核心,Struts2的众多功能都是通过拦截器来实现的. 2. 拦截器的配置 1)编写实现Interceptor 接口的类. 2)在s ...
随机推荐
- 寻找数列中第k大的数算法分析
问题描述:给定一系列数{a1,a2,...,an},这些数无序的,现在求第k大的数. 看到这个问题,首先想到的是先排序,然后直接输出第k大的数,于是得到啦基于排序的算法 算法一: #include&l ...
- Linux字符界面和图形界面
Ubuntu图形界面和字符界面的切换 Ubuntu和其他的Linux系统一样,有图形界面和字符界面,同时能够设置默认的启动界面. linux的显示界面分为命令行的字符界面和图形界面,我们可以设置lin ...
- Java学习之异常处理
在 Java 中,所有的异常都有一个共同的祖先 Throwable(可抛出),Throwable 指定代码中可用异常传播机制通过 Java 应用程序传输的任何问题的共性. Throwabl ...
- Structs
1.服务端的运行程序 2.Servlet的三个方法 init service:抽象方法 destroy 3.步骤 (1).在web.xml中 <servlet> <servlet-n ...
- JavaScript 运动框架 Step by step
http://blog.csdn.net/rsj217/article/details/7986905 关于offsetLeft:http://www.cnblogs.com/JackJiang/ar ...
- tomcat远程debug端口开启
declare -x CATALINA_OPTS="-server -Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt ...
- android LayoutInflater的使用
看其继承关系: public abstract class LayoutInflater extends Object java.lang.Object ↳ android.view.LayoutIn ...
- 文件上传 PHP
参考http://www.w3school.com.cn/php/php_file_upload.asp 文件上传实际上是一个文件复制的过程 当我们选中一个文件之后 php默认的tmp文件夹中就有 ...
- .NET Core 安装
Visual Studio 2015 和 .NET Core 安装 安装 Visual Studio 和 .NET Core 1.安装 Visual Studio Community 2015,选择 ...
- Oracle DBA常用的系统表
1.2 DBA常用的表1.2.1 dba_开头 dba_users数据库用户信息 dba_segments 表段信息 dba_extents 数据区信息 dba_ob ...