Struts2学习记录-Value Stack(值栈)和OGNL表达式

时间:2023-03-09 00:19:36
Struts2学习记录-Value Stack(值栈)和OGNL表达式

仅仅是学习记录。把我知道的都说出来

一。值栈的作用

记录处理当前请求的action的数据。

二,小样例

有两个action:Action1和Action2

Action1有两个属性:name和passwd

Action2有两个属性:name2和passwd2

请求从Action1进入。chain方法导向Action2

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="default" namespace="/" extends="struts-default">
<action name="action1" class="com.geekgao.action.Action1">
<result type="chain">
<param name="actionName">action2</param>
</result>
</action> <action name="action2" class="com.geekgao.action.Action2">
<result>
/welcome.jsp
</result>
</action>
</package>
</struts>

welcome.xml:

<%@ taglib prefix="s" uri="/struts-tags" %>
<%--
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title></title>
</head>
<body>
name:<s:property value="name"/><br>
passwd:<s:property value="passwd"/><br>
locale:<s:property value="locale"/>
<s:debug></s:debug>
</body>
</html>

三,訪问

訪问的路径:http://localhost:8080/Struts2OGNL/action1?

name=nn&passwd=pp

Struts2OGNL是项目名称

以下是值栈截图:

Struts2学习记录-Value Stack(值栈)和OGNL表达式

注意到,我们连接中给了的值都已经出如今值栈中了,即name和passwd。还有我们发现这明显是一个栈,谁先调用谁在以下,当我们取值的时候,是从栈顶開始向下搜索,首先找到的那个值就是终于结果。

jsp中取值的方法:

name:<s:property value="name"/><br>
passwd:<s:property value="passwd"/><br>
locale:<s:property value="locale"/>

依据名称取值,value是OGNL表达式,即对象图形导航语言,就是依据这个表达式找到一个对象。

假设一个对象的属性有一个类,比如User user。User有name和passwd属性,那么能够这样传參:

http://localhost:8080/Struts2OGNL/action1?

user.name=nn&user.passwd=pp

而且能够这样取值:

name:<s:property value="user.name"/><br>
passwd:<s:property value="user. passwd"/><br>
locale:<s:property value="locale"/>

当然,还能够直接用对象调用方法。比如以下的代码:

<s:property value="user.toString()"/>

其余的使用方法,看以下这张图,就不一一总结了。这个图是视频中截下来的,以后有问题了来看看,查查,应该就会使用了。

Struts2学习记录-Value Stack(值栈)和OGNL表达式