Struts2 值栈概述
2017-12-03 00:00
211 查看
什么是值栈
1、之前在web阶段,在servlet里面进行操作,把数据放到域对象里面,在页面中使用el表达式获取到,域对象在一定范围内,存值和取值。
2、在struts2里面提供本身一种存储机制,类似域对象,是值栈,可以存值与取值
①在action里面把数据放到值栈里面,在页面中获取到值栈数据
3、servlet和action区别
①Servlet:默认在第一次访问时创建,创建一次,单实例对象。
②Action:访问时创建,每次访问action时候,都会创建action对象,创建多次。多实例对象。
4、值栈存储位置
①每次访问action时候,都会创建action对象
②在每个action对象都会有一个值栈对象。
获取值栈对象
获取值栈对象有多种方式
①使用ActionContext类里面的方法得到值栈对象(常用方式)
②验证每个action对象只有一个值栈对象
返回结果
值栈内部结构
1、值栈结构分为两部分
第一部分 root,结构时list集合,一般操作的都是root里面的数据
第二部分 context,结构时map集合。
2、struts2里面标签 s:debug,使用这个标签可以查看值栈结构和存储值
HelloAction.java
struts.xml
hello.jsp
运行结果
点开Debug
1、之前在web阶段,在servlet里面进行操作,把数据放到域对象里面,在页面中使用el表达式获取到,域对象在一定范围内,存值和取值。
2、在struts2里面提供本身一种存储机制,类似域对象,是值栈,可以存值与取值
①在action里面把数据放到值栈里面,在页面中获取到值栈数据
3、servlet和action区别
①Servlet:默认在第一次访问时创建,创建一次,单实例对象。
②Action:访问时创建,每次访问action时候,都会创建action对象,创建多次。多实例对象。
4、值栈存储位置
①每次访问action时候,都会创建action对象
②在每个action对象都会有一个值栈对象。
获取值栈对象
获取值栈对象有多种方式
①使用ActionContext类里面的方法得到值栈对象(常用方式)
public class FormAction extends ActionSupport { public String execute() { ActionContext context = ActionContext.getContext(); ValueStack stack1 = context.getValueStack(); return NONE; } }
②验证每个action对象只有一个值栈对象
public class FormAction extends ActionSupport { public String execute() { ActionContext context = ActionContext.getContext(); ValueStack stack1 = context.getValueStack(); ValueStack stack2 = context.getValueStack(); System.out.println(stack1 == stack2); return NONE; } }
返回结果
true
值栈内部结构
1、值栈结构分为两部分
第一部分 root,结构时list集合,一般操作的都是root里面的数据
第二部分 context,结构时map集合。
2、struts2里面标签 s:debug,使用这个标签可以查看值栈结构和存储值
HelloAction.java
public class HelloAction extends ActionSupport { @Override public String execute() throws Exception { return "ok"; } }
struts.xml
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN" "http://struts.apache.org/dtds/struts-2.3.dtd"> <struts> <package name="demo" extends="struts-default" namespace="/"> <action name="hello" class="action.HelloAction"> <result name="ok">/hello.jsp</result> </action> </package> </struts>
hello.jsp
<body> <s:debug></s:debug> </body>
运行结果
点开Debug
相关文章推荐
- Struts2使用16 -- 值栈与 OGNL 1 -- 概述
- Struts2使用之值栈与OGNL-概述
- Struts2 值栈概述
- Struts2中:值栈(ValueStack)、值栈中的Action实例、Struts2中的其他命名对象 小结
- Struts2中的值栈
- Struts2 中的值栈的理解
- Struts2学习记录-Value Stack(值栈)和OGNL表达式
- 《研磨struts2》 第一章 Struts2概述 之 Struts2基础
- struts2拦截器概述
- 浅谈Struts2中的值栈
- Struts2数据传输的背后机制:ValueStack(值栈)
- struts2中的拦截器概述和简单例子
- struts2值栈一些问题
- struts2的整体回顾(ACTION、拦截器、值栈、OGNL表达式、ModelDriven方案等)
- struts2_day03_05_值栈内部结构(一)_06_值栈内部结构(二)_07_向值栈放数据三种方式
- struts2 值栈
- 关于Struts2中的值栈与OGNL表达式
- struts2 值栈分析
- Struts2源码阅读(一)_Struts2框架流程概述 .
- Struts2-Action概述和在Action中访问WEB资源