struts2入门之OGNL

OGNL是一个表达式语言,可以和EL表达式做类比,至于OGNL和struts2的关系,我想说的是,它们之间根本没有关系。之所以二者经常一起提起,是因为二者经常会一起用,struts2提供的标签中的属性里可以写ognl表达式,用于获取数据,这些数据既可以从域对象中获取,也可以从值栈中获取,这取决于你的数据是放在域对象中还是值栈中,下面贴出jsp页面获取值栈中的数据对象集合:

 1 <%@ page language="java" contentType="text/html; charset=UTF-8"
 2 pageEncoding="UTF-8"%>
 3 <%@ taglib uri="/struts-tags" prefix="s" %>
 4 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
 5 <html>
 6 <head>
 7 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 8 <title>Insert title here</title>
 9 </head>
10 <body>
11 <p>action中定义变量并生成get方法,来获取值栈中的数据(对象)</p>
12 <s:property value="user.userName"/>
13 <s:property value="user.passWord"/>
14 <p>action中定义变量并生成get方法,来获取值栈中的数据(list集合)</p>
15 <s:iterator value="list">
16 <s:property value="userName"/>
17 <s:property value="passWord"/>
18 </s:iterator>
19 <p>action中定义变量并生成get方法,来获取值栈中的数据(list集合另一种方式)</p>
20 <s:iterator value="list" var="user">
21 <s:property value="#user.userName"/>
22 <s:property value="#user.passWord"/>
23 </s:iterator>
24 </body>
25 </html>

我的action代码如下,提供了存储对象集合到值栈中:

 1 package com.cczhao.struts.valuestack;
 2
 3 import java.util.ArrayList;
 4 import java.util.List;
 5
 6 import com.cczhao.struts.entity.User;
 7 import com.opensymphony.xwork2.ActionContext;
 8 import com.opensymphony.xwork2.ActionSupport;
 9 import com.opensymphony.xwork2.util.ValueStack;
10
11 /**
12  *
13  * 功能: TODO 往值栈中存放数据.<br/>
14  * date: 2017年6月25日 下午12:05:55 <br/>
15  *
16  * @author cczhao
17  * @version
18  * @since JDK 1.8
19  */
20 public class ValueStack3Action extends ActionSupport {
21     private static final long serialVersionUID = 1L;
22     private User user = new User();
23     private User user2 = new User();
24     private List<User> list = new ArrayList<>();
25
26     public List<User> getList() {
27         return list;
28     }
29
30     public User getUser2() {
31         return user2;
32     }
33
34     public User getUser() {
35         return user;
36     }
37
38     // 方式3:通过在action中定义变量,并生成get方法
39     public String execute() throws Exception {
40         ActionContext context = ActionContext.getContext();
41         ValueStack stack = context.getValueStack();
42
43         user.setPassWord("123456");
44         user.setUserName("曾柔");
45         user2.setPassWord("111");
46         user2.setUserName("双儿");
47         list.add(user);
48         list.add(user2);
49         return "success";
50     }
51 }

OGNL表达式语言结合struts2的标签进行使用能很好的用于获取后台的实体数据,上面的action只显示了一种往值栈中存放数据,然后在jsp中利用struts2标签+ognl来获取数据,其实往值栈中存放数据还有两种方式:set方式和push方式。但这两种方式占用空间较大,但是灵活度高点,可以斟酌使用,但在实际开发中我觉的在action中声明变量并生成get方法,这种方式往值栈中存放数据的方式更常用一点,因为平时前后台交互的时候大多是对象在交互,且可能是对象集合。

刚看了这么多,以后如果有新的认识会继续更新。

--------------------------------------------分割线---------------------------------------------

时间: 2024-12-05 12:19:43

struts2入门之OGNL的相关文章

Struts2中使用OGNL

OGNL(Object Graphic Navigatino Language) OGNL称为对象图导航语言.以一个对象为根(起点),通过OGNL可以访问与这个对象关联的其它对象,正所谓“对象导航,顺藤摸瓜” 使用OGNL的jsp需要引入标签库:<%@taglib prefix="s" uri="/struts-tags"%> struts.xml <?xml version="1.0" encoding="UTF-8

(转) STRUTS2中的OGNL

OGNL表达式是(Object-Graph Navigation Language)是对象图形化导航语言.OGNL是一个开源的项目,struts2中默认使用OGNL表达式语言来显示数据.与serlvet中的el表达式的作用是一样的.OGNL表达式有下面以下特点: 支持对象方法调用,例如:objName.methodName(); 支持类静态的方法调用和值访问,表达式的格式为 @[类全名(包括包路经)] @[方法名 |  值名] 例如: @[email protected]('foo%s','ba

【转】Struts2中的OGNL详解 (1)

 转载声明:菰☆淚 - Struts2中的OGNL详解 首先了解下OGNL的概念: OGNL是Object-Graph Navigation Language的缩写,全称为对象图导航语言,是一种功能强大的表达式语言,它通过简单一致的语法,可以任意存取对象的属性或者调用对象的方法,能够遍历整个对象的结构图,实现对象属性类型的转换等功能. 此外,还得先需弄懂OGNL的一些知识: 1.OGNL表达式的计算是围绕OGNL上下文进行的. OGNL上下文实际上就是一个Map对象,由ognl.OgnlCont

【转】Struts2中的OGNL详解 (2)

转载声明:菰☆淚 -Struts2中的OGNL详解 总结OGNL的使用方法: 访问属性 名字属性获取:<s:property value="user.username"/><br> 地址属性获取:<s:property value="user.address.addr"/><br> 访问方法 调用值栈中对象的普通方法:<s:property value="user.get()"/><

(补充)9.Struts2中的OGNL表达式

OGNL表达式概述 1. OGNL是Object Graphic Navigation Language(对象图导航语言)的缩写 * 所谓对象图,即以任意一个对象为根,通过OGNL可以访问与这个对象关联的其它对象 * 通过它简单一致的表达式语法,可以存取对象的任意属性,调用对象的方法,遍历整个对象的结构图,实现字段类型转化等功能.它使用相同的表达式去存取对象的属性 2. Struts2框架使用OGNL作为默认的表达式语言 * OGNL是一种比EL强大很多倍的语言 * xwork提供 OGNL表达

STRUTS2入门笔记

1.1.开发Struts 2程序最少需要的JAR如下: struts2-core-2.x.x.jar :Struts 2框架的核心类库      xwork-core-2.x.x.jar :XWork类库,Struts 2在其上构建      ognl-2.6.x.jar :对象图导航语言(Object Graph Navigation Language),struts2框架通过其读写对象的属性      freemarker-2.3.x.jar :Struts 2的UI标签的模板使用FreeM

Struts2中使用OGNL表达式语言访问静态方法和静态属性以及我遇到的问题和解决方法

1.上一篇文章,我介绍了OGNL表达式语言,本来想在那篇文章上加上一个使用OGNL访问静态方法和静态属性的例子,但是昨天晚上我写代码时,报了一个警告,获取得到静态属性的值,却获取不到静态方法的返回值,所以今天特别的写篇文章来介绍一下. 2.这里我先附上这个例子,来了解如何使用OGNL表达式访问静态方法和属性. (1).其中访问静态方法或者静态属性的语法分别为:@类的路径@方法名,@类的路径@属性名,语法中类的路径,即包名+类名. (2).对于OGNL来说,java.lang.Math是其默认的类

1.struts2入门程序

**Struts2的入门步骤(重点掌握开发的步骤,尤其要记住拷贝哪些配置文件)** 0. 需求:编写JSP的页面,超链接,点击超链接发送请求,让框架某个类中的某个方法执行了. 1. 步骤一:下载Struts2的开发包 * http://struts.apache.org/download.cgi 2. 解决struts-2.3.15.3-all.zip包 * 解压后会看到有包和一些文件,大家需要掌握包相关的信息 * apps -- Struts2框架提供了一些应用. * libs -- Stru

Struts2入门---常用的OGNL标签的用法

<%@page import="com.struts.valueStack.PersonComparator"%> <%@page import="java.util.ArrayList"%> <%@page import="java.util.List"%> <%@page import="com.struts.valueStack.Person"%> <%@ page