<%@ 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(Object-Graph Navigation Language)是一种强大的表达式语言,用于获取和设置Java对象的属性。它是Struts2框架中的默认表达式语言,同时也被广泛...
2. **上下文(Context)**:OGNL表达式执行时,会使用一个上下文对象来查找和设置值。这个上下文通常包含了当前作用域内的所有变量和对象。 3. **值栈(Value Stack)**:在Struts 2框架中,OGNL默认使用值栈来处理...
首先,OGNL表达式是Struts2中不可或缺的一部分,它允许开发者以一种声明式的方式访问和修改对象的属性。比如,`myBean.getMyProperty()`这样的Java代码可以通过`#myBean.myProperty`的OGNL表达式在模板中实现。OGNL...
1. **OGNL基本语法**:OGNL表达式通常由对象引用和属性访问组成,例如`user.name`表示访问名为`user`的对象的`name`属性。它支持点号`.`、索引`[]`、方法调用`()`以及各种操作符,如加减乘除、比较、逻辑等。 2. **...
2. **上下文(Context)**:OGNL表达式解析时会查找一个上下文,通常是一个Map,其中包含了变量和对象。 3. **值栈(Value Stack)**:在Struts2中,OGNL与值栈紧密配合,值栈是一个对象栈,用于存储Action对象和...
7. **上下文(Context)和值栈(Value Stack)** OGNL 使用上下文对象来存储变量和值,而值栈则用于处理表达式中的运算对象。源码揭示了上下文和值栈如何协同工作,以处理表达式中的变量引用和运算。 8. **OGNL 在...
Ognl上下文(Context)与值栈(Value Stack)** 在Ognl中,数据的访问依赖于一个上下文对象,其中包含了当前环境中所有变量和对象。值栈则是一个LIFO(后进先出)的数据结构,用于存放请求处理过程中的对象。Ognl...
4. **上下文(Context)与值栈(Value Stack)**:ognl在执行表达式时,会使用一个上下文对象来保存变量和参数,以及一个值栈来管理多个表达式间的共享数据。理解这两个概念对于调试和优化ognl表达式很有帮助。 5. ...
2. **上下文(Context)**: OGNL执行表达式时需要一个上下文,这个上下文包含两个主要部分:变量映射(Variable Map)和值栈(Value Stack)。变量映射通常用于存储临时变量,而值栈则用于处理请求处理过程中的模型...
1. **值栈(Value Stack)**: Struts2的核心概念之一是值栈,它是一个存储用户请求数据的对象集合。OGNL通过值栈来查找和操作这些数据,使得视图能够直接访问Action对象的属性,而无需显式地将数据传递给JSP。 2. *...
3. **上下文(Context)和值栈(Value Stack)**:在Web应用中,OGNL利用值栈来处理请求和响应。表达式可以访问栈上的任何对象,通过`#root`、`#top`等特殊变量进行操作。 4. **列表和映射操作**:OGNL可以方便地...
在ActionContext中,ValueStack是默认的表达式语言引擎,因此,我们可以通过ActionContext来操作ValueStack,进而利用OGNL表达式进行数据存取。 例如,假设我们有一个名为`UserAction`的Action,其中包含一个`User`...
通过以上内容,我们可以看到Struts2框架不仅提供了强大的功能,如OGNL表达式语言和ValueStack数据管理工具,还允许开发者通过自定义拦截器等方式来扩展框架的行为,从而满足更加复杂的应用场景需求。这对于理解和...
值栈(Value Stack)是Struts2中的另一个关键组件,它是一个包含对象的栈,通常用于存储Action和结果数据。值栈与OGNL(Object-Graph Navigation Language)紧密相关,OGNL是一个表达式语言,用于获取和设置Java对象的...
根据给定的信息,我们将深入探讨Struts2框架中的一些核心概念,包括OGNL表达式的使用、ValueStack的理解及其数据存取方法,以及拦截器的生命周期等。 ### OGNL表达式及其三要素 #### OGNL简介 OGNL(Object-Graph ...
2. **上下文(Context)**:OGNL表达式执行时,会有一个上下文,包含当前环境中的变量和对象。在Struts2中,这个上下文包含了Action对象和其他请求相关的对象。 3. **方法调用**:OGNL不仅支持属性访问,还能调用...
开发者会学习如何与Value Stack交互,以及使用OGNL表达式。 5. **ActionContext与Session/Request Context**:ActionContext封装了HTTP请求和响应,以及session和application上下文。源码中会讲解如何在Action中...
一旦获取到值栈,就可以通过栈的各种操作(如push、pop)来添加或移除对象,以及通过OGNL表达式来访问和修改对象的属性。 **OGNL(Object-Graph Navigation Language)** OGNL是一种强大的表达式语言,用于在值栈中...
总结来说,`#`在OGNL中代表Action Context,允许我们访问Value Stack和其他上下文中的数据;`$`用于引用对象和属性;而`%`在这个场景下未被使用,但在Java中通常用于数学运算。同时,文档也演示了如何利用OGNL进行...