struts2 - 9 值栈数据的存取

124 篇文章 1 订阅
96 篇文章 0 订阅

 

  • jsp页面

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ taglib prefix="s" uri="/struts-tags" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
	<h1>demo1</h1>
	<h3>值栈中top值</h3>
	<s:property value="[0].top"/>
	<s:debug></s:debug>
	<hr/>
	
	
	<h1>ognlDemo1</h1>
	<h2>context取值</h2>
	<h3>request取值</h3>
	<s:property value="#request.msg"/>
	<h3>session取值</h3>
	<s:property value="#session.msg"/>
	<s:debug></s:debug>
	<hr/>
	
	<h1>ognlDemo2</h1>
	<h3>valuestack.put方法  list</h3>
	<s:property value="[0].top[0]" /><br/>
	<s:property value="[0].top[1]" /><br/>
	<s:property value="[0].top[2]" /><br/>

	<h1>ognlDemo3</h1>
	<h3>valuestack.set方法  map</h3>
	<s:property value="ulist" /><br/>
	<s:property value="[0].ulist" /><br/>
	<s:property value="[0].ulist[0].username" /><br/>
	<h3>遍历输出</h3>
	
	
	<pre>
	s:iterator中属性:
		* value	要迭代的集合,需要从值栈中获取
		* var	迭代过程中,遍历的对象
			* var编写上,把迭代产生的对象默认压入到context栈中,从context栈取值,加#号
			* var不编写,默认把迭代产生的对象压入到root栈中
	</pre>
	
	<h3>iterator中使用var属性</h3>
	<s:iterator value="ulist" var="user">
		<s:property value="#user.username"/>-<s:property value="#user.password"/><br/>
	</s:iterator>
	
	<h3>iterator中不使用var属性</h3>
	<s:iterator value="ulist">
		<s:property value="username"/>-<s:property value="password"/><br/>
	</s:iterator>
	
	
</body>
</html>

 

 

  • action页面
package web.action;

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

import javax.servlet.http.HttpServletRequest;

import org.apache.struts2.ServletActionContext;
import org.apache.struts2.views.xslt.ArrayAdapter;

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

import bean.User;
import ognl.Ognl;
import ognl.OgnlContext;
import ognl.OgnlException;

public class OgnlDemo extends ActionSupport {
	
	
	/*
	 * 演示从valuestack中存取值得几种方法,jsp中用标签取得后台传入vs栈的数据。
	 * jsp中需要引入<%@ taglib prefix="s" uri="/struts-tags" %>
	 *   用<s:property value="值栈数据"/>取数据
	 */
	
	
	/**
	 * 值域valuestack存取数据的简单方法
	 */
	public String demo1() {
		System.out.println("demo1 running...");
		
		ValueStack vs = ActionContext.getContext().getValueStack();
		
		vs.push("alex");
		vs.push("alex1");
		
		return "OgnlDemo";
	}
	
	/**
	 *jsp中 从context域中取数据存取数据的简单方法--查看jsp中对应名称标签
	 *<s:property value="#request.msg"/>
	 *<s:property value="#mession.msg"/>
	 */
	public String ognlDemo1() throws OgnlException {
		
		HttpServletRequest request = ServletActionContext.getRequest();
		request.setAttribute("msg", "request  取值");

		request.getSession().setAttribute("msg", "session 取值");
		return "OgnlDemo";
	}
	
	
	/**
	 * 栈顶是list集合
	 * @return
	 */
	public String ognlDemo2() {
		
		List<String> list = new ArrayList<String>(); 
		list.add("a");
		list.add("b");
		list.add("c");
		ValueStack vs = ActionContext.getContext().getValueStack();
		
		vs.push(list);
		
		return "OgnlDemo";
	}
	
	/**
	 * 栈顶是map集合
	 * @return
	 */
	public String ognlDemo3() {
		
		List<User> list = new ArrayList<User>(); 
		list.add(new User("alex1", "123"));
		list.add(new User("alex2", "123"));
		list.add(new User("alex3", "123"));
		
		ValueStack vs = ActionContext.getContext().getValueStack();
		
		vs.set("ulist", list);
		
		return "OgnlDemo";
	}
	
	
	
}

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值