`

struts2中ognl表达式的理解和用法

阅读更多
ognl表达式的使用如下面的例子:
总的来说,就是
action里面的私有属性,在页面里面我们可以用EL表达式取到,也可以
<s:property value="name"/>取到,不过action里面的私有属性必须要有自己的set|get方法
这样底层的拦截器才能对其数据封装,页面也才能取得到,这样在struts.xml的配置里面我们也是可以使用EL表达式来获得action类的属性变量值(struts2里面的action可以implements Action接口,也可以是一个普通的java类,不过方法的必须要有返回值,且返回类型为String型。在配置struts.xml的时候对action的进行注册,但是package必须要继承struts-default)
因为:
 <default-class-ref class="com.opensymphony.xwork2.ActionSupport" />

这样我们就可以在action页面的获取页面提交的属性值。
同样我们也可以使用ActionContext.getContext()这个对象来获得页面的请求的域,和action的配置信息页面的属性必需在action里面进行set|get方法后才能在action里面获取值,页面也可以取到服务器返回的
他的属性,而这个属性范围为root对象。
同时还有request|session|appliaction三个域都放在valuestack里面,而页面获取对象时,root对象可以直接用struts标签获取,其他三个对象要在他的name名前面加上‘#’才能取出来
引用

<h1>${name}</h1>
<hr>
获取Action属性:<s:property value="name"/>
<br>
获取Reqeust属性:<s:property value="#request.name"/><br>
获取Session属性:<s:property value="#session.name"/><br>
获取Application属性:<s:property value="#application.name"/><br>
<hr>


package tarena.actions;

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

import javax.servlet.http.HttpServletRequest;
import org.apache.struts2.ServletActionContext;
import com.opensymphony.xwork2.ActionContext;

public class OgnlAction {
	private String name;
	private List list = new ArrayList();

	public List getList() {
		return list;
	}
	public void setList(List list) {
		this.list = list;
	}
	public String execute(){
		name = "张三";//为name属性设置值
		Person p = new Person("1001","男");//为list属性添加一个Person对象
		list.add(p);
		//获取request,并添加信息
//		Map request = (Map)ActionContext.getContext().get("request");
		HttpServletRequest request1 = ServletActionContext.getRequest();
		request1.setAttribute("name", "request value");
		//	获取session,并添加信息
		Map session = ActionContext.getContext().getSession();
		session.put("name", "session value");
		//	获取application,并添加信息
		Map application = ActionContext.getContext().getApplication();
		application.put("name", "application value");
		return "ognl";
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
}

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
   <%@ taglib uri="/struts-tags" prefix="s" %>
<!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>
<h1>${name}</h1>
<hr>
获取Action属性:<s:property value="name"/>
<br>
获取Reqeust属性:<s:property value="#request.name"/><br>
获取Session属性:<s:property value="#session.name"/><br>
获取Application属性:<s:property value="#application.name"/><br>
<hr>
获取Action中List属性信息
<s:property value="list[0].no"/>
<s:property value="list[0].sex"/>
<hr>
方法调用<s:property value="name.length()"/><br>
静态属性:<s:property value="@java.lang.Math@PI"></s:property>
</body>
</html>
分享到:
评论

相关推荐

    Struts2 使用OGNL表达式

    这篇博客文章可能详细探讨了如何在Struts2中使用OGNL来传递和操作数据。 OGNL是Struts2的核心组件之一,它允许开发者通过简单的字符串表达式来访问和修改对象的属性,甚至可以处理复杂的对象结构。以下是一些关于...

    struts2-OGNL表达式测试

    在“struts2-OGNL表达式测试”中,你可能会看到各种OGNL表达式的使用示例,比如访问和修改对象属性、动态调用方法、处理集合和执行条件判断等。通过这些测试,你可以更好地理解和掌握OGNL在实际开发中的运用,确保在...

    Struts2 如何使用OGNL表达式(三十八)

    本文将深入探讨如何在Struts2中有效地使用OGNL表达式。 首先,OGNL是Struts2的核心组成部分,它允许开发者在Action类和JSP页面之间灵活地传递和访问数据。在Action类中,你可以设置属性,然后在JSP页面上通过OGNL...

    ognl表达式 ognl表达式

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

    精通struts2的ognl表达式

    ### 精通Struts2中的OGNL表达式 在深入探讨Struts2框架的核心功能时,理解并熟练掌握OGNL(Object-Graph Navigation Language)表达式的应用是至关重要的一步。OGNL是一种强大的表达式语言,它允许开发者通过简洁、...

    struts2 OGNL表达式

    在Struts2中,OGNL被用作默认的表达式语言,用于在Action类和JSP页面之间传递数据,以及在Action上下文中进行动态方法调用。 在Struts2的配置文件中,如struts.xml或struts.properties,你可以看到OGNL表达式的使用...

    struts2 ognl表达式

    在Struts2中,OGNL表达式可以嵌入到各种基本标签中,如`s:textfield`, `s:property`, `s:action`等,以实现动态的数据展示和交互。例如,`&lt;s:property value="%{#session.user.name}" /&gt;`会将session中user对象的...

    Struts2的标签库及OGNL表达式语言

    本篇文章将详细探讨Struts2中的OGNL表达式语言以及标签库。 **OGNL(对象图导航语言)** OGNL是一种强大的表达式语言,它允许开发者通过简洁的语法来访问和操作对象的属性。在Struts2框架中,OGNL扮演着至关重要的...

    struts2 OGNL表达式使用

    下面是OGNL表达式的使用方法: 访问基本属性 1. 访问值栈中action的普通属性: 2. 访问值栈中对象的普通属性: 3. 访问值栈中对象(对象包含对象)的普通属性: 4. 访问值栈中对象的普通方法:().length()"/&gt; 5. ...

    ognl表达式java使用案例详解(测试通过)

    本案例提供ognl使用详解,测试通过,只需解压放入自己WEB项目中,执行struts_ognl包内java文件即可(未提供jia包,若需要可以联系留言发至邮箱),若测试不好可以联系本人提供指导. Struts 2默认的表达式语言是OGNL...

    Struts2深入学习----OGNL表达式原理

    其中,OGNL(Object-Graph Navigation Language)是Struts2中的核心表达式语言,用于数据绑定和表示层的数据操作。这篇深入学习的文章主要探讨了OGNL表达式的原理和使用。 首先,我们来理解一下OGNL是什么。OGNL是...

    OGNL表达式

    - **#**:通常用于表示OGNL表达式,在Struts2中作为OGNL表达式的开头标记。 - **%**:用于指定JSP页面的编码格式,如`;charset=utf-8" pageEncoding="utf-8" %&gt;`。 - **$**:在JSP页面中表示EL表达式的开头,但在...

    struts2 OGNL 表达式及各种标签的使用

    本文将深入探讨OGNL的基本用法、标签的使用以及其在Struts2中的实际应用。 1. **OGNL基本概念** - OGNL是一种表达式语言,用于获取和设置对象属性。它支持点号和索引访问、方法调用、运算符、集合操作等。 - 例如...

    struts2中的OGNL的源码

    其中,OGNL(Object-Graph Navigation Language)是Struts2中的核心表达语言,用于在视图层与模型层之间传递数据。在深入理解OGNL的源码之前,我们首先需要了解OGNL的基本概念和用法。 OGNL是一种强大的表达式语言...

    struts2标签和OGNL表达式

    在Struts2中,OGNL表达式通常与Struts标签结合使用,如`s:property`标签,用于显示对象的属性值。例如,`&lt;s:property value="name"/&gt;`将显示栈顶对象的"name"属性值。栈顶对象是指在ValueStack(值栈)中位于最顶层...

    JS:ognl表达式

    - **框架集成**:许多 Java 框架,如 Struts2、Hibernate Validator 等,都集成了 OGNL 表达式用于数据绑定和验证。 - **模板引擎**:在模板引擎中使用 OGNL 表达式来动态渲染页面。 - **业务逻辑处理**:在复杂的...

    struts2标签和OGNL表达式.pdf

    在Struts2中,EL用于在JSP页面中简洁地访问对象属性和方法。EL表达式通常以${}的形式出现,如${expression}。 Struts2的值栈(Value Stack)是一个重要的概念,它用于存储Action中的数据,并且在JSP页面中通过OGNL...

    Struts2 OGNL表达式实例详解

    在Struts2中,OGNL可以用来访问Action中的属性、方法,也可以用来访问ValueStack中的数据。在本文中,我们将通过实例代码来详细介绍OGNL的使用。 实例1:访问Action中的属性 在Struts2中,我们可以使用OGNL来访问...

    struts2 ognl用法项目

    Struts2是一个流行的Java Web...总之,OGNL是Struts2中的关键工具,使开发者能够灵活地处理数据和控制流程。通过实践这个“Struts2 OGNL用法项目”,你可以深入学习OGNL的强大功能,并提升在Struts2框架下的开发能力。

Global site tag (gtag.js) - Google Analytics