struts2值栈和OGNL操作

index.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
    <%
    String path = request.getContextPath();
    String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
    %>




Insert title here


值栈
值栈

struts.xml配置




    
         
       
       
            success.jsp
       
      
   
  

ValueStackAction

package com.liuyongqi.struts2.action;

import java.util.ArrayList;
import java.util.List;
import java.util.Map;

import org.apache.struts2.ServletActionContext;

import com.liuyongqi.struts2.entity.Users;
import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;
import com.opensymphony.xwork2.util.CompoundRoot;
import com.opensymphony.xwork2.util.ValueStack;

/**
 * 值栈的Action
 * @author Administrator
 *2018年7月17日下午2:11:51
 */
@SuppressWarnings("serial")
public class ValueStackAction extends ActionSupport{
	private String usersname;
	
	private Users user=new Users();
	
	private List list = new ArrayList();
	
	public String getUsersname() {
		return usersname;
	}
	
	public Users getUser() {
		return user;
	}
	
	public List getList() {
		return list;
	}

	@Override
	public String execute() throws Exception {
		// TODO Auto-generated method stub
	//获取值栈对象
		System.out.println("sss");
		
		//三.在action中定义变量(或对象、集合),使用相应的get方法(推荐常用)
		//Step1:在action定义变量
		//Step2:生成变量的get方法
		//Step3:在执行方法里面为变量赋值
		usersname="admins";
		
		//四.使用上述方法向值栈中存放一个对象
		user.setUsername("liuyongqi");
		user.setPassword("888888");
		//五.使用上述方法向值栈中存放一个List集合
		for (int i = 0; i < 10; i++) {
			Users users = new Users("zs"+(i+1), "aaaaaaaaa"+(i+1));
			list.add(users);
		}		
		
		//1. 获取ActionContext类的对象
		ActionContext actionContext = ActionContext.getContext();
		//2. 调用ActionContext中的方法获取值栈对象
		ValueStack valueStack = actionContext.getValueStack();
		//往Action实例对象的值栈存入数据有三种方式:
		
		// 一.使用值栈对象中的set方法
		//Step1:在action中获取值栈对象;
		
		//Step2:调用值栈对象的set方法存值
		valueStack.set("name2", "liuyongqis");
		
		//二.使用值栈对象中的push方法
		//Step1:在action中获取值栈对象;
		
		//Step2:调用值栈对象的push方法存值。
		valueStack.push("aaaa");// 压栈操作,压入栈顶
		
		
		//ServletActionContext.getRequest().getSession().setAttribute("valueStack", valueStack);
		ServletActionContext.getRequest().getSession().setAttribute("name1", "bbbbbb");
		Map map = valueStack.getContext();
		System.out.println(map.entrySet());
		System.out.println("ssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss");
		CompoundRoot root = valueStack.getRoot();
		System.out.println(root);
		return SUCCESS;
	}

}

成功页面success.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
    <%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
    <%@ taglib uri="/struts-tags" prefix="s"%>




Insert title here


值栈


OGNL的基本操作


OGNL中#、%的使用

#使用:使用 # 来获取context里面的数据

%使用

如果直接在struts2表单标签里面使用OGNL表达式Struts2不能识别,需要在OGNL表达式前加%。
错误的写法
正确的写法

OGNL获取值栈中的数据

获取使用set方法存入值栈中的值


获取push方法设置的值


获取使用变量的get方法存入值栈中的值

获取get方式存入值栈的字符串


获取get方式存入值栈的对象


获取get方式存入值栈的集合

获取list的值第一种方式


获取list的值第二种方式



获取list的值第三种方式


 

你可能感兴趣的:(测试)