码迷,mamicode.com
首页 > 其他好文 > 详细

struts学习(3)

时间:2018-11-05 00:37:28      阅读:181      评论:0      收藏:0      [点我收藏+]

标签:分享   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里面数据。

 

struts学习(3)

标签:分享   Map集合   jstl   tags   col   构造方法   image   字符   语句   

原文地址:https://www.cnblogs.com/liaoxiaolao/p/9906756.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!