Struts2值栈

本文深入解析了Servlet与Action的区别,强调了Action的多实例特性及其对值栈的影响。详细介绍了OGNL(Object-Graph Navigation Language)作为强大的表达式语言,在Struts2中的应用,包括其语法特点、如何与Struts2标签库配合使用以及如何操作值栈数据。同时,文章还解释了值栈的概念,其在每个Action中的独立存在,以及如何通过ActionContext和ServletActionContext获取值栈对象。

Servlet和action的区别

  1. servlet在第一次访问时被创建,并创建一次(单例)
  2. action也是在访问时创建,但会创建多次(每次都是一个新的action实例)
  3. 在action中保存数据的值栈对象也会随之而产生多个

OGNL 概述(Object-Graph Navigation Language)

  1. 表达式语言,比EL表达式更为强大,需要导入jar包
  2. 是独立的体系,不属于struts2
  3. 存取对象的任意属性,调用对象的方法,遍历整个对象的结构图,实现字段类型转化等功能
  4. 配合struts2的标签操作值栈数据(大有取代el的用意)
  5. 只能在jsp页面中使用

OGNL的使用

1. 导入jar包

2. 引入struts2标签库

值栈

1.概念:struts2中本身提供的一种数据操作的机制,类似之前servlet的域对象(域对象依然可以使用),它并不是用来替换域对象的,值栈可以和域操作同时存在互不影响(其实,值栈和域对象是有一定联系的),给我们操作数据提供了一种更适合sturts2的选择而已

2.值栈在每一个Action中都独立存在一份值栈对象

3.获取值栈对象

  1. 通过ActionContext,先调用getContext()方法,再调用getValueStack() 方法
  2. 通过ServletActionContext,调用getValueStack(request)方法,里面有参数

      两种方法返回的对象是相同的

ValueStack valueStack = ServletActionContext.getValueStack(ServletActionContext.getRequest());

ValueStack valueStack1 = ActionContext.getContext().getValueStack();

s:debug标签

通过s:debug标签调试程序(上线的程序不能使用),查看值栈中的数据情况

在struts中添加常量(开启调试模式,老版本不需要):

<constant name="struts.devMode" value="true"></constant>

在jsp页面中添加debug标签

<s:debug></s:debug>

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值