struts2

struts2 值栈概述+获取值栈对象

2018-05-16  本文已影响0人  DouDouZH

一、什么是值栈

1、之前在web阶段,在servlet里面操作,把数据放到域对象里,在页面中使用el表达式获取到对应的值,域对象在一定的范围内,存值和取值。
2、在struts2里面提供本身的一种存储机制,类似于域对象,是值栈,可以存值和取值

3、servlet和action的区别

Action创建演示
UserAction.java

package work.zhangdoudou.Action;

import com.opensymphony.xwork2.ActionSupport;

public class UserAction extends ActionSupport{

    
    public UserAction() {
        System.out.println("创建了Action");
    }

    @Override
    public String execute() throws Exception {
        // TODO Auto-generated method stub
        return NONE;
    }
}

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>
    <constant name="struts.enable.DynamicMethodInvocation" value="false" />
    <constant name="struts.devMode" value="true" />
    <package name="default" namespace="/" extends="struts-default">
        <action name="userAction" class="work.zhangdoudou.Action.UserAction" method="execute">
        </action>   
        
    </package>
</struts>

多次刷新页面效果


image.png image.png

4、值栈的存储位置

image.png

二、获取值栈对象

image.png
获取值栈的方式

使用ActionContex他类里面的方法获取值栈对象

        //1获取actionContext类对象
        ActionContext context=ActionContext.getContext();
        //2调用放大得到值栈对象
        ValueStack stack1=context.getValueStack();
每个action只有一个action值栈对象

代码

package work.zhangdoudou.Action;

import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;
import com.opensymphony.xwork2.util.ValueStack;

public class UserAction extends ActionSupport{

    public UserAction() {
        System.out.println("创建了Action");
    }

    @Override
    public String execute() throws Exception {
        //1获取actionContext类对象
        ActionContext context=ActionContext.getContext();
        //2调用放大得到值栈对象
        ValueStack stack1=context.getValueStack();
        ValueStack stack2=context.getValueStack();
        
        System.out.println(stack1==stack2);
        
        // TODO Auto-generated method stub
        return NONE;
    }
}

执行结果

image.png
上一篇下一篇

猜你喜欢

热点阅读