`
applepieone
  • 浏览: 11543 次
  • 性别: Icon_minigender_2
  • 来自: 杭州
最近访客 更多访客>>
社区版块
存档分类
最新评论

OGNL表达式之value stack和stack context

 
阅读更多
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
 pageEncoding="ISO-8859-1"%>
<!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=ISO-8859-1">
  <title>Login</title>
 </head>
 <body>
  <h1>
   Login JSP
  </h1>
  <form action="login.action">
   username:
   <input type="text" name="username">
   <br>
   password:
   <input type="text" name="password">
   <br>
   <input type="submit">
  </form>
 </body>
</html>
 
<%@ page language="java" import="java.util.*" pageEncoding="ISO-8859-1"%>
<%@ taglib prefix="s" uri="/struts-tags" %>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <base href="<%=basePath%>">
   
    <title>My JSP 'result.jsp' starting page</title>
   
 <meta http-equiv="pragma" content="no-cache">
 <meta http-equiv="cache-control" content="no-cache">
 <meta http-equiv="expires" content="0">   
 <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
 <meta http-equiv="description" content="This is my page">
 <!--
 <link rel="stylesheet" type="text/css" href="styles.css">
 -->

  </head>
 
  <body>
    username:<s:property value="username"/><br>
    password:<s:property value="password"/><br>
    <s:debug></s:debug>

  </body>
</html>

 最后显示的图

 

 

注意:

  • parameters、request、session、application、attr等对象,存在于stack context中,访问这些对象需要用#前缀来指明。

       例如:request对象:用于访问HttpServletRequest的属性。例如#request['foo']或#request.foo,用于返回调用HttpServletRequest的getAttribute('foo')方法的返回值。

  • 如果需要访问ValueStack里的属性,直接通过${property}可访问,ValueStack是根对象。当系统创建了Action实例后,该Action实例已经被保存到了ValueStack中,故不用#即可访问Action属性了。
分享到:
评论

相关推荐

    ognl表达式 ognl表达式

    ### OGNL表达式的理解和应用 #### 一、OGNL简介与基本概念 OGNL(Object-Graph Navigation Language)是一种强大的表达式语言,用于获取和设置Java对象的属性。它是Struts2框架中的默认表达式语言,同时也被广泛...

    ognl表达式

    2. **上下文(Context)**:OGNL表达式执行时,会使用一个上下文对象来查找和设置值。这个上下文通常包含了当前作用域内的所有变量和对象。 3. **值栈(Value Stack)**:在Struts 2框架中,OGNL默认使用值栈来处理...

    struts2_OGNL表达式ActionContext及valuesStack

    首先,OGNL表达式是Struts2中不可或缺的一部分,它允许开发者以一种声明式的方式访问和修改对象的属性。比如,`myBean.getMyProperty()`这样的Java代码可以通过`#myBean.myProperty`的OGNL表达式在模板中实现。OGNL...

    OGNL-中文版说明文档HTML

    1. **OGNL基本语法**:OGNL表达式通常由对象引用和属性访问组成,例如`user.name`表示访问名为`user`的对象的`name`属性。它支持点号`.`、索引`[]`、方法调用`()`以及各种操作符,如加减乘除、比较、逻辑等。 2. **...

    使用的ognl的chm

    2. **上下文(Context)**:OGNL表达式解析时会查找一个上下文,通常是一个Map,其中包含了变量和对象。 3. **值栈(Value Stack)**:在Struts2中,OGNL与值栈紧密配合,值栈是一个对象栈,用于存储Action对象和...

    ognl-2.7.3-src

    7. **上下文(Context)和值栈(Value Stack)** OGNL 使用上下文对象来存储变量和值,而值栈则用于处理表达式中的运算对象。源码揭示了上下文和值栈如何协同工作,以处理表达式中的变量引用和运算。 8. **OGNL 在...

    学习Ognl 这是为初学Ognl者提供的一个小例子,本人也在学习中,希望通过它能让你认识 Ognl ,送达到入门!!

    Ognl上下文(Context)与值栈(Value Stack)** 在Ognl中,数据的访问依赖于一个上下文对象,其中包含了当前环境中所有变量和对象。值栈则是一个LIFO(后进先出)的数据结构,用于存放请求处理过程中的对象。Ognl...

    ognl源码 下载

    4. **上下文(Context)与值栈(Value Stack)**:ognl在执行表达式时,会使用一个上下文对象来保存变量和参数,以及一个值栈来管理多个表达式间的共享数据。理解这两个概念对于调试和优化ognl表达式很有帮助。 5. ...

    OGNL的使用

    2. **上下文(Context)**: OGNL执行表达式时需要一个上下文,这个上下文包含两个主要部分:变量映射(Variable Map)和值栈(Value Stack)。变量映射通常用于存储临时变量,而值栈则用于处理请求处理过程中的模型...

    Struts2 & OGNL

    1. **值栈(Value Stack)**: Struts2的核心概念之一是值栈,它是一个存储用户请求数据的对象集合。OGNL通过值栈来查找和操作这些数据,使得视图能够直接访问Action对象的属性,而无需显式地将数据传递给JSP。 2. *...

    ognl-2.6.11-javadoc.rar

    3. **上下文(Context)和值栈(Value Stack)**:在Web应用中,OGNL利用值栈来处理请求和响应。表达式可以访问栈上的任何对象,通过`#root`、`#top`等特殊变量进行操作。 4. **列表和映射操作**:OGNL可以方便地...

    JavaEE ActionContext存取数据示例

    在ActionContext中,ValueStack是默认的表达式语言引擎,因此,我们可以通过ActionContext来操作ValueStack,进而利用OGNL表达式进行数据存取。 例如,假设我们有一个名为`UserAction`的Action,其中包含一个`User`...

    Struts2框架基础 二

    通过以上内容,我们可以看到Struts2框架不仅提供了强大的功能,如OGNL表达式语言和ValueStack数据管理工具,还允许开发者通过自定义拦截器等方式来扩展框架的行为,从而满足更加复杂的应用场景需求。这对于理解和...

    Struts2.0培训文档

    值栈(Value Stack)是Struts2中的另一个关键组件,它是一个包含对象的栈,通常用于存储Action和结果数据。值栈与OGNL(Object-Graph Navigation Language)紧密相关,OGNL是一个表达式语言,用于获取和设置Java对象的...

    struts2框架面试题及答案02

    根据给定的信息,我们将深入探讨Struts2框架中的一些核心概念,包括OGNL表达式的使用、ValueStack的理解及其数据存取方法,以及拦截器的生命周期等。 ### OGNL表达式及其三要素 #### OGNL简介 OGNL(Object-Graph ...

    struts2--3.Ognl与值栈

    2. **上下文(Context)**:OGNL表达式执行时,会有一个上下文,包含当前环境中的变量和对象。在Struts2中,这个上下文包含了Action对象和其他请求相关的对象。 3. **方法调用**:OGNL不仅支持属性访问,还能调用...

    开发者突击 struts2 第二章 源代码

    开发者会学习如何与Value Stack交互,以及使用OGNL表达式。 5. **ActionContext与Session/Request Context**:ActionContext封装了HTTP请求和响应,以及session和application上下文。源码中会讲解如何在Action中...

    详解Java的Struts框架中栈值和OGNL的使用

    一旦获取到值栈,就可以通过栈的各种操作(如push、pop)来添加或移除对象,以及通过OGNL表达式来访问和修改对象的属性。 **OGNL(Object-Graph Navigation Language)** OGNL是一种强大的表达式语言,用于在值栈中...

    ONGL中(#.%.$)三种符号的用法.docx

    总结来说,`#`在OGNL中代表Action Context,允许我们访问Value Stack和其他上下文中的数据;`$`用于引用对象和属性;而`%`在这个场景下未被使用,但在Java中通常用于数学运算。同时,文档也演示了如何利用OGNL进行...

Global site tag (gtag.js) - Google Analytics