ognl

本文详细介绍了OGNL(Object Graph Navigation Language)的概念及其在Struts2框架中的应用,包括OgnlContext的使用、根对象与非根对象的区别、ValueStack的工作原理以及Struts2的数据传递方式。
  1. OGNL
    1.1 OGNL的全称是Object Graph Navigation Language(对象图导航语言),它是一种强大的表达式语言
    1.2 OgnlContext(ongl上下文)其实就是Map (教室、老师、学生)

    OgnlContext=根对象(1)+非根对象(N)
    非根对象要通过"#key"访问,根对象可以省略"#key"

    注1:context:英文原意上下文,环境/容器

1.3 把根对象和非根对象说出来

重点:
1、一个上下文中只有一个根对象
2、取跟对象的值,只需要直接通过根对象属性即可
3、非根对象取值必须通过指定的上下文容器中的#key.属性去取。

1、ActionContext一次请求创建一次
2、值栈取值从上往下,取到为止,如果已经拿到,不再往下找。
  1. ValueStack
    2.1 值栈
    先进后出的数据结构,弹夹 push/pop
    2.2 为什么要使用ValueStack作为根对象
    放到值栈中的对象都可视为根对象

从小到大
page -> request -> session -> application

从上至下
A
B
C
D

//伪代码
*.action
3. ActionContext
3.1 ActionContext ac = ActionContext.getContext();//保证同一请求中只创建一个上下文
request
session
application
parameters
ValueStack(root)

3.2 向ValueStack压栈
push(XxxAction)//helloAction *action
push(ModelDirver.getModel())//model不为null user

3.3 Map<String,String[]> map = request.getParamterMap(); 压action代码详解
//参数名==OGNL表达式
{“userName”:“aaa”,“uname”:“bbb”,“upwd”:“ccc”,“age”:“22”}

  setValue("userName", ac, vs, "aaa");
  setValue("uname", ac, vs, "bbb");
  setValue("upwd", ac, vs, "ccc");
  setValue("age", ac, vs, "22");
  1. struts2中传递数据
    可以使用作用域,但更多的是利用ValueStack或ActionContext

核心点:
1、OGNL的全称是Object Graph Navigation Language(对象图导航语言),它是一种强大的表达式语言
2、OgnlContext(ongl上下文)其实就是Map (教室、老师、学生)
3、根对象和非根对象的理解
4、ValueStack
同一请求中只创建一个上下文
先压action,再呀modeldriven
从上往下找值

5、struts2中传递数据

回顾:
struts简介
struts入门
1、jar导入
2、web.xml strutsprepareandexecutefilter
3、struts.xml
struts-default.xml(struts-core.jar)
struts-base.xml(开发基本配置,package)xxxaction_*
struts-sy.xml
4、action execute
5、struts-sy.xml配置
6、jsp调用

struts动态调用
	name=xxxaction_*	method={1}
	
相互传值
	1、modeldriven
	2、set、get方法使用
	3、对象导航
	
j2ee与struts上下文集成
	注入
		耦合	implement servletRequestAware
		解耦
	非注入
		耦合	servletActionContext.getContext.getrequest
		解耦
		
1、拿到request就可以想jsp页面传值
2、在action中定义属性,提供set、get方法,那么jsp页面也可以拿到值。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值