struts2对ognl表达式的使用(配图解加讲解)
ognl它是一个功能强大的表达式语言,用来获取和设置Java对象的属性,它旨在提供一个更高的更抽象的层次来对Java对象图进行导航。
先看一张示意图
如果是下面的除了第一种valueStack的下面几种类型我们的方式就要用#号,如有一个request的属性我们就是这么用 #request.req 就相当于request.getAttribute("req");
下面我们做一个实例:
首先写一个Test.JAVA
package com.fish;
import java.util.ArrayList;
import java.util.List;
publicclass Test {
String myname;
List<Person> list;
public List<Person> getList() {
returnlist;
}
publicvoid setList(List<Person> list) {
this.list = list;
}
public String getMyname() {
returnmyname;
}
publicvoid setMyname(String myname) {
this.myname = myname;
}
public String execute(){
list=new ArrayList<Person>();
list.add(new Person("张三",12));
list.add(new Person("张四",13));
list.add(new Person("张五",14));
list.add(new Person("张流",15));
return"success";
}
}
里面有个person类,里面只有name和age属性就不写了。接着是strut.s.Xml
<?xmlversion="1.0"encoding="UTF-8"?>
<!DOCTYPEstruts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
<packagename="fish"namespace="/test"extends="struts-default">
<actionname="redfish"class="com.fish.Test"method="execute">
<paramname="myname">sadasd</param>//这里对myname进行赋值,说一下,如果不用ognal获取myname的值的话,如果在这里赋值和在execute方法赋值都赋值的话,在页面会显示这里赋的值,用了ognl的话,页面会显示在execute里面赋给的值。
<resultname="success">/index.jsp</result>
</action>
</package>
</struts>
我们写index.JSP文件
<%
request.setAttribute("req","这是一个请求");
request.getSession().setAttribute("sess","这是一个会话");
%>
<s:propertyvalue="#request.req"/><br> 这就是对rquest属性的操作格式
<s:propertyvalue="#session.sess"/><br>
<s:propertyvalue="myname"/><br> 这个不加#号是因为这个属性会直接到ognl上下文中,然后直接读值
<s:setvar="lists"value="{'aq','bw','ce'}"></s:set>//这是list的使用方法。List集合用{}表示
<s:iteratorvalue="#lists"><br> //利用迭代器显示值
<s:property/> //如果里面不说value则是默认的输出
</s:iterator>
<s:setvar="maps"value="#{'ycy':'aaa','yaku':'bbb'}">//这是map的使用方法
Map集合用#{‘键’:‘值’}
</s:set>
<s:iteratorvalue="#maps"> //利用迭代器
<s:propertyvalue="key"/>=<s:propertyvalue="value"/><br>//有了value就具体读值
</s:iterator>
<s:iftest="fish in {'fish1','yaku'}" >//这是是判断标签,意思是说fish在这个集合里面吗。显然里面没有就会显示不在
在<br></s:if>
<s:else>
不在<br></s:else>
的记录。只是想想告诉有挑选功能,但是一般这些数据在数据库中,数据一般在数据库里面就已经选择处理过的,所以struts赋值遍历就行了。
<s:propertyvalue="name"/><br>//直接写list对象的属性,不用跟着对象.属性
</s:iterator>
我们看看页面的结果:
struts2对ognl表达式的使用(配图解加讲解)的更多相关文章
- java之struts2之OGNL表达式
struts2推荐使用ognl表达式 ognl: object graph navigation language 对象导航图语言 如:school.teacher.address="北京& ...
- Struts2中OGNL表达式的用法
今天分享的是Struts2框架中的一种ognl表达式语言,主要分两个目标去学习 1.理解struts2传值的优先级 2.ognl与el的区别 一:ognl表达式语言简介 OGNL的全称是O ...
- Struts2的OGNL表达式语言
一.OGNL的概念 OGNL是Object-Graph Navigation Language的缩写,全称为对象图导航语言,是一种功能强大的表达式语言,它通过简单一致的语法,可以任意存取对象的属性或者 ...
- 初窥struts2(二)OGNL表达式
Struts2总结 Struts2完整的处理流程: 1 客户端发送请求,交给struts2控制器(StrutsPrepareAndExecuteFilter). 2 Filter控制器进行请求过滤 ...
- struts2 与 OGNL 表达式,jsp中 利用ognl 在valuestack中取值
在Struts2中,一个请求在终于到达Action的方法之前,Action对象本身会被压入ValueStack(实际上就是放到ValueStack的CompoundRoot中),所以Action对象是 ...
- Struts2之OGNL表达式
OGNL(Object-Graph Navigation Language的简称),对象图导航语言,它是一门表达式语言,除了用来设置和获取Java对象的属性之外,另外提供诸如集合的投影和过滤以及lam ...
- struts2(四) ognl表达式、值栈、actionContext之间的关系
今天来说说ognl表达式在struts2中的运用. --wh 一.什么是Ognl? 通过百度百科查询到的解释,其中详细的说明了OGNL的作用. 下面我们就对OGNL这5个作用进行讲解 1.存取对象的任 ...
- Struts2之 OGNL表达式和值栈
技术分析之OGNL表达式概述(了解) 1. OGNL是Object Graphic Navigation Language(对象图导航语言)的缩写 * 所谓对象图,即以任意 ...
- struts2:OGNL表达式,遍历List、Map集合;投影的使用
OGNL是Object-Graph Navigation Language的缩写,它是一种功能强大的表达式语言(Expression Language,简称为EL),通过它简单一致的表达式语法,可以存 ...
随机推荐
- 四大OLAP工具选型浅析
OLAP(在线分析处理)这个名词是在1993年由E.F.Codd提出来的,只是,眼下市场上的主流产品差点儿都是在1993年之前就已出来,有的甚至已有三十多年的历史了.OLAP产品不少,本文将主要涉及C ...
- RethinkDB创始人教你如何打造一个伟大的互联网产品
关于作者 我叫Slava Akhmechet,本人是 RethinkDB 的创始人之一,RethinkDB是开源,分布式数据库,旨在帮助开发人员与运营商在打造实时应用时处理无结构数据 如何打造一个伟大 ...
- Windows Server 2008安装 百度Wifi \ 360Wifi \ 小米Wifi 失败的解决方法
服务器管理 -> 功能 -> 安装 [无线LAN]服务
- PHP 12 :字符串的操作
原文:PHP 12 :字符串的操作 本章介绍字符串的操作.之所以要把字符串单独拿出来讲,是因为字符串在每种语言里都是非常重要的.并且也是大家关心的.我们从以下几个方面介绍字符串: 字符串的表现形式. ...
- Scala开发环境搭建与资源推荐
Scala开发环境搭建与资源推荐 本文介绍了Scala的开发环境,包括SDK.IDE的设置.常用资源列表等.Scala是一门静态语言,很有可能就是Java的继承者. AD: 2014WOT全球软件技术 ...
- Android项目---常用动画
在项目中经常会有闪屏的效果 在这里主要是通过定时器,将已经设定好的效果展现出来 /* * 2.5秒以后开始执行Runnable的run方法 */ new Handler().postDelayed(n ...
- RPC服务的发布订阅实现Thrift
Thrift 个人实战--RPC服务的发布订阅实现(基于Zookeeper服务) 前言: Thrift作为Facebook开源的RPC框架, 通过IDL中间语言, 并借助代码生成引擎生成各种主流语言的 ...
- ORM的实现
前言 经过一段时间的编写,终于有出来一个稳定的版本,期间考虑了多种解决方案也偷偷学了下园子里面大神们的作品. 已经有很多的ORM框架,为什么要自己实现一个?我的原因是在遇到特殊需求时,可以在ORM中加 ...
- beanutils中Lazy
public class LazyBean { // public static void main(String[] args) {// DynaBean dynaBean=ne ...
- Unity学习入门
文章说明,文本内容基于配置文件进行依赖注入 unity介绍:Unity是由微软的Patterns & Practices团队开发的一个轻量级.可扩展的依赖注入(Dependency Injec ...