OGNL值栈

<%@page import="java.util.Date"%>
<%@page import="com.opensymphony.xwork2.util.ValueStack"%>
<%@page import="com.opensymphony.xwork2.ActionContext"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
    
    <!-- 加载OGNL自定义标签库 -->
<%@ taglib prefix="s" uri="/struts-tags" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<%
ActionContext ac=ActionContext.getContext();
ValueStack vs=ac.getValueStack();
//弹出对象,抛走
//Date dt=(Date)vs.pop();
//out.print(dt);
//得到顶部对象,只是看看而已
//Date dt=(Date)vs.peek();
//out.print(dt);
%>
<br>
使用OGNL访问值战
<br><br>
<!-- 使用El表达式访问值栈对象-->
${date }<br>
${userid }<br>
访问Map栈<br>
${sessionScope.ses }<br>
<br><br>


<!-- 使用标签方式访问值栈对象 -->
<!-- 打印值栈信息 -->
<s:debug></s:debug>

<!-- 输出什么,有重名时输出第几个对象 ,从0开始算,0号对象没有继续向下查找-->
<s:property value="[1]['date']"/><br>
<s:property value="userid"/><br>
<s:property value="[1].date"/><br>
<s:property value="[1].userid"/><br>
<!-- 默认输出顶部的对象 -->
<s:property/><br><br>

<!-- 使用标签方式访问Map栈 -->
<s:property value="#session.ses"/><br>
<s:property value="#parameters.userid"/><br>
<s:property value="#application.app"/><br>
<s:property value="#request.req"/><br><!-- request传送不到栈中 -->
<s:property value="#attr.ses"/><br>
<br>

<!-- 调用实例方法 -->
产生随机数:<s:property value="[0].nextInt(100)"/><br>

<!-- 调用静态属性和方法 -->
随机数:<s:property value="@java.lang.Math@random()"/><br>
PI=<s:property value="@java.lang.Math@PI"/><br>
<br>

<!-- 访问栈中的list类型的对象 -->
输出list的长度=<s:property value="[0].size()"/><br>
输出list的内容=<s:property value="[0].get(0)"/><br>
<br>
<!-- 访问对象的集合属性 -->
输出对象属性为list的长度=<s:property value="[0].mylist.size()"/><br>
输出对象属性为list的内容=<s:property value="[0].mylist"/><br>
输出对象属性为list的内容=<s:property value="[0].mylist[0]"/><br>
输出对象属性为list是否为空=<s:property value="[0].mylist.isEmpty"/><br>

</body>
</html>

  

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
        <!-- 加载OGNL自定义标签库 -->
<%@ taglib prefix="s" uri="/struts-tags" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>

测试URL标签<br><br>
<s:url value="/index.jsp" var="surl"></s:url><br>

<s:url action="test" var="stest">
<s:param name="id" value="123"></s:param>
<s:param name="user" value="'tom'"></s:param>

</s:url><br>
<s:url action="test" method="execute" var="stest1"></s:url><br>
<br>
向Map栈压入键值对<br>
<s:set  scope="session" name="setname" value="1231213213"></s:set>
从Session中获取:${sessionScope.setname }
<s:debug></s:debug><br>
使用Map栈中的url<br>
<a href="${surl }">测试页</a><br>

</body>
</html>

  

//Struts2界面

<?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.action.extension" value="do,action,,"></constant>
<!-- 允许调用静态方法和静态属性 -->
<constant name="struts.ognl.allowStaticMethodAccess" value="true"></constant>
<package name="default" extends="struts-default">

<action name="test" class="com.action.TestAction" method="test">
<result>test.jsp</result>

</action> 


</package>
</struts>

  

原文地址:https://www.cnblogs.com/zhangnaitao/p/6116249.html