Struts(十):OGNL表达式(一)
- Struts2 用s:porperty标签和OGNL表达式来读取值栈中的属性值:
I、值栈中的属性值:
1、对象栈:读取对象栈中的某一个对象的属性值;
2、Map栈 :request,session,application的一个属性值或一个请求参数的值。
II、读取对象栈(ObjectStack)中的对象属性:
1、若想读取Object Stack里的某个对象的属性,可以通过以下集中形式之一:
object.propertyname
object['propertyname']
object["propertyname"]
2、ObjectStack中的对象可以从0开始的的下表来引用,ObjectStack里的栈顶对象可以用[0]来引用,它下面的那个对象可以用[1]引用。
[0].message
3、[n]的含义是从第n个开始搜索,而不是值搜索第n个对象
4、若从栈顶对象开始搜索,则可以省略下标部分:message
5、结合s:property标签<s:property value="[0].message" />或者 <s:property value="message"/>(通常情况下都采用这种方式来写)
<%@ taglib prefix="s" uri="/struts-tags"%>备注:如果需要使用s:property标签,必须在jsp页面头部引入:
III、默认情况下,action会被struts2自动放在值栈的顶部。
- 值栈属性读取示例:
基于《Struts(九):值栈(OGNL)》这一篇文章的例子基础上,修改details.jsp:
<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%> <%@ taglib prefix="s" uri="/struts-tags"%> <!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><s:debug/><s:property value="productName"/><br/> ${productDesc}<br/> ${productPrice}<br/></body> </html>
调试启动tomcat,输入地址:http://localhost:8080/Struts_01/,页面:
点击“提交”按钮,跳转到details.jsp
点开[Debug]
这里边的com.dx.sturts2.valuestack.Product存储的对象就是Action,被存储到了ValueStack的栈顶,所以details.jsp页面可以使用${productDesc},相当于<s:property value="[0].productDesc"/> 也相当于<s:property value="productDesc"/>
添加一个Product2.java:
1 package com.dx.struts2.valuestack; 2 3 4 public class Product2 { 5 private String productName; 6 private String productDesc; 7 8 public String getProductName() { 9 return productName; 10 } 11 12 public void setProductName(String productName) { 13 this.productName = productName; 14 } 15 16 public String getProductDesc() { 17 return productDesc; 18 } 19 20 public void setProductDesc(String productDesc) { 21 this.productDesc = productDesc; 22 } 23 24 }
View Code
修改Product.java Action save方法:
public String save(){ System.out.println("save");// 1、获取值栈对象ValueStack valueStack= ActionContext.getContext().getValueStack();// 2、生成一个Product2对象Product2 product2=new Product2();product2.setProductDesc("product2 desc");product2.setProductName("product2 name");// 3、将Product2对象存放到值栈中 valueStack.push(product2);return "success";}
继续查看details.jsp:
调试Product的save方法:
从截图我们可以知道:Action类对象在进入save方法之前就已经被放入到栈顶。
details.jsp:
点开[Debug]
转载于:https://www.cnblogs.com/yy3b2007com/p/6538147.html
Struts(十):OGNL表达式(一)相关推荐
- JSTL/EL表达式/Struts2标签/OGNL表达式
文章目录 JSTL + EL表达式 Struts 标签 + OGNL表达式 JSTL + EL表达式 JSTL 只能用在 JSP 文件中,不可以在 XML 和 HTML 文件中使用,不可以用在 JS ...
- Struts标签、Ognl表达式、el表达式、jstl标签库这四者之间的关系和各自作用
来自:http://blog.csdn.net/love_you_99/article/details/8184797 一 介绍 1.Struts2的作用 Struts2标签库提供了主题.模板支持,极 ...
- Struts标签和OGNL表达式
Struts标签和OGNL表达式 1.OGNL通过索引访问ValueStack中的对象. [0].name [1].name 上面使用的索引的方式并不是直接取得指定元素,而是从指定索引开始向下搜索. ...
- Struts 2的OGNL表达式
来源:http://www.24xuexi.com/w/2011-04-26/88911.html Struts 2的OGNL表达式 标准的OGNL会设定一个根对象(root对象).假设使用标准OGN ...
- struts OGNL表达式
OGNLContext对象有两部分构成 一部分是ROOT:可以放置任何对象作为ROOT 另外一部分Context:必须是Map形式(键值对) OGNL表达式操作 package cn.future.a ...
- 关于OGNL表达式中的%,$,#
OGNL表达式非常强大-其中#.%.$这三个符号在OGNL表达式中经常出现,而这三种符号也是开发者不容易掌握和理解的部分,要认真区分. 1.#符号的用途一般有三种. 1)访问非根对象属性,例如示例 ...
- 深入理解Struts2中的OGNL表达式
Struts 2中的表达式语言 Struts 2支持以下几种表达式语言: OGNL(Object-Graph Navigation Language),可以方便地操作对象属性的开源表达式语言: JST ...
- Struts2漏洞分析之Ognl表达式特性引发的新思路
摘要 在Ognl表达式中,会将被括号"()"包含的变量内容当做Ognl表达式执行.Ognl表达式的这一特性,引发出一种新的攻击思路.通过将恶意代码存储到变量中,然后在调用Ognl表 ...
- struts2教程(9)--OGNL表达式使用
OGNL表示式使用和值栈 一.介绍 OGNL是Object Graphic Navigation Language(对象图导航语言)的缩写,它是一个开源项目. Struts2框架使用OGNL作为默认的 ...
最新文章
- 【Flutter】Flutter 应用主题 ( ThemeData | 动态修改主题 )
- 360美女运营孙哲:生活就应像花朵一样绽放
- 在word中,整篇文章想要在每一章另起一页
- 沣东新城镐京遗址规划_沣东新城房价为啥这么高?
- 95-30-020-java.util-Map
- Access SqLDbHelper
- oracle 知识点
- Stetho简化Android调试(二)
- unity打开htc vive 的前置摄像头 和 实现增强现实效果
- 【背包问题】基于粒子群算法求解0-1背包问题matlab代码
- 【最新黑苹果】Big Sur/Win双系统-小米笔记本pro/gtx 安装教程!
- 遗传算法的基本原理与方法(转)
- 动作频频,BAT欲瓜分10万亿互联网医疗市场蛋糕?
- re- 正则表达操作
- 简单学JAVA-Java学习方法-JavaSE阶段
- react——@修饰器——高阶组件的使用——通过装饰器来调用高阶组件——简单修改样式
- AI得贤招聘官上线ChatGPT,免费为企业提供AI智能助手Molly
- 常用电子面单接口API demo下载(菜鸟快递鸟)
- Java解析PDF文件(PDFBOX、itext解析PDF)导出PDF中的子图片,去除PDF中的水印
- 读Zepto源码之Ajax模块 1
热门文章
- Java Nashorn--Part 3
- Cracking The Coding Interview5.2
- Extjs4 actioncolumn只能显示图标,不能显示文字的暂时解决方法
- 牛津剑桥古怪面试题:美女与经济学
- go语言实现简易ftp客户端
- VS2015--win32project配置的一些想法之在 Visual Studio 2015 中进行调试的同一时候分析性能...
- 05-数据类型、常量、变量
- struts2 18拦截器详解(五)
- VSS (Visual Source Safe 2005) 用法详解
- 在Unix/Linux上令(java)JVM支持中文输出