标签:分享 Map集合 jstl tags col 构造方法 image 字符 语句
1 ognl概述
2 ognl入门案例
3 什么是值栈
(1)servlet和action区别
(2)值栈存储位置
4 如何获取值栈对象
5 值栈内部结构
6 向值栈放数据
(1)s:debug标签
(2)向值栈放字符串
(3)向值栈放对象
(4)向值栈放list集合
7 从值栈获取数据
(1)从值栈获取字符串
(2)从值栈获取对象
(3)从值栈获取list集合
OGNL的作用
Struts2默认的表达式语言就是OGNL,它具有以下特点:
①支持对象方法调用。例如:objName.methodName()。
OGNL概述
1 之前web阶段,学习过EL表达式,EL表达式在jsp中获取域对象里面的值
2 OGNL是一种表达式,这个表达式更加强大
(1)在struts2里面操作值栈数据
(2)一般把ognl在struts2操作,和struts2标签一起使用操作值栈
3 OGNL不是struts2的一部分:和struts2标签一起使用
(1)使用ognl时首先导入jar包,struts2提供jar包
OGNL入门案例
1 使用ognl+struts2标签计算字符串长度
支持对象方法调用。例如:objName.methodName()。
(1)在java代码中,调用字符串.length()。
2 使用struts2标签
(1)使用jstl时候,导入jar之外,在jsp页面中引入标签库
使用struts2标签时候,在jsp中引入标签库。
<%@ taglib uri="/struts-tags" prefix="s" %>
在body这样写
<s:property value="‘haha‘.length()"></s:property>
运行
什么是值栈
1 之前在web阶段,在servlet里面进行操作,把数据放到域对象里面,在页面中使用el表达式获取到,域对象在一定范围内,存值和取值。
2 在struts2里面提供本身一种存储机制,类似于域对象,是值栈。可以存值和取值。
(1)在action里面把数据放到值栈里面,在页面中获取到值栈数据
3 servlet和action区别
(1)servlet,默认在第一次访问时候创建,创建一次,
(2)Action:访问时创建,每次访问action时候,都会创建action对象,创建多次,多实例对象。
实验:在action的构造方法中输出一条语句,每次访问的时候这条语句都会输出(记得实现execute()方法)。
4 值栈存储位置
(1)每次访问action时候,都会创建action对象
(2)在每个action对象里面都会有一个值栈对象(只有一个)
获取值栈对象
1 获取值栈对象有多种方式
(1)常用方式:使用ActionContext类里面的方法得到值栈对象
(2)每个action对象只有一个值栈对象
public String execute(){ //1 获取ActionContext类的对象 ActionContext context = ActionContext.getContext(); //2 调用方法得到值栈对象 ValueStack stack1 = context.getValueStack(); ValueStack stack2 = context.getValueStack(); //每个action中只有一个值栈 System.out.println(stack1==stack2); return NONE; }
输出true。
值栈
值栈的内部结构
1 值栈分为两部分结构
第一部分 root,结构是list集合
(1)一般操作都是root里面的数据
第二部分 context,结构map集合
root 结构是ArrayList集合
一般操作都是root里面数据。
标签:分享 Map集合 jstl tags col 构造方法 image 字符 语句
原文地址:https://www.cnblogs.com/liaoxiaolao/p/9906756.html