struts2对ognl表达式的使用(配图解加讲解)

时间:2021-09-01 23:34:55

ognl它是一个功能强大的表达式语言,用来获取和设置Java对象的属性,它旨在提供一个更高的更抽象的层次来对Java对象图进行导航。

先看一张示意图

struts2对ognl表达式的使用(配图解加讲解)

如果是下面的除了第一种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表达式的使用(配图解加讲解)

struts2对ognl表达式的使用(配图解加讲解)的更多相关文章

  1. java之struts2之OGNL表达式

    struts2推荐使用ognl表达式 ognl: object graph navigation language 对象导航图语言 如:school.teacher.address="北京& ...

  2. Struts2中OGNL表达式的用法

    今天分享的是Struts2框架中的一种ognl表达式语言,主要分两个目标去学习    1.理解struts2传值的优先级    2.ognl与el的区别 一:ognl表达式语言简介 OGNL的全称是O ...

  3. Struts2的OGNL表达式语言

    一.OGNL的概念 OGNL是Object-Graph Navigation Language的缩写,全称为对象图导航语言,是一种功能强大的表达式语言,它通过简单一致的语法,可以任意存取对象的属性或者 ...

  4. 初窥struts2&lpar;二&rpar;OGNL表达式

    Struts2总结 Struts2完整的处理流程: 1  客户端发送请求,交给struts2控制器(StrutsPrepareAndExecuteFilter). 2  Filter控制器进行请求过滤 ...

  5. struts2 与 OGNL 表达式,jsp中 利用ognl 在valuestack中取值

    在Struts2中,一个请求在终于到达Action的方法之前,Action对象本身会被压入ValueStack(实际上就是放到ValueStack的CompoundRoot中),所以Action对象是 ...

  6. Struts2之OGNL表达式

    OGNL(Object-Graph Navigation Language的简称),对象图导航语言,它是一门表达式语言,除了用来设置和获取Java对象的属性之外,另外提供诸如集合的投影和过滤以及lam ...

  7. struts2&lpar;四&rpar; ognl表达式、值栈、actionContext之间的关系

    今天来说说ognl表达式在struts2中的运用. --wh 一.什么是Ognl? 通过百度百科查询到的解释,其中详细的说明了OGNL的作用. 下面我们就对OGNL这5个作用进行讲解 1.存取对象的任 ...

  8. Struts2之 OGNL表达式和值栈

    技术分析之OGNL表达式概述(了解)        1. OGNL是Object Graphic Navigation Language(对象图导航语言)的缩写        * 所谓对象图,即以任意 ...

  9. struts2:OGNL表达式,遍历List、Map集合;投影的使用

    OGNL是Object-Graph Navigation Language的缩写,它是一种功能强大的表达式语言(Expression Language,简称为EL),通过它简单一致的表达式语法,可以存 ...

随机推荐

  1. HTML5 canvas画布写炫彩动态的倒计时效果

    html代码如下,插入了2个js代码. <!DOCTYPE html> <html> <head> <title>canvas</title&gt ...

  2. jquery深拷贝和浅拷贝

    var obj1 = { a: 1 };var obj2 = { b: {bbb: 2} };function Clone(){//浅拷贝 拷贝到obj1值会被改变 在一个栈中 $.extend(ob ...

  3. 关于TCP&sol;IP的三次握手和四次挥手解释

    TCP协议三次握手过程分析 TCP(Transmission Control Protocol) 传输控制协议 TCP是主机对主机层的传输控制协议,提供可靠的连接服务,采用三次握手确认建立一个连接: ...

  4. 从客户端中检测到有潜在危险的Request&period;Form值的解决方法

    描述:从客户端中检测到有潜在危险的Request.Form值的解决方法asp.net 2.0 通常解决办法将.aspx文件中的page项添加ValidateRequest="false&qu ...

  5. slam相关知识

    Kinect视觉SLAM技术介绍 http://www.open-open.com/news/view/ce76e2 本文介绍SLAM的历史.理论以及实现的方式,且主要介绍基于视觉(Kinect)的实 ...

  6. 移动Web框架&colon;jQuery Mobile VS Sencha Touch

    最近常被问到是用 jQuery Mobile还是Sencha Touch,本人也比较关注这两个框架,试图从以下两方面发表点儿见解: 身家背景,都系出名门 1.jQuery Mobile 建立在jQue ...

  7. Phpstorm中使用SFTP

    Phpstorm中经常会出现FTP连接失败的问题,这个时候我们可以使用SFTP来连接服务器. 1.添加服务器.tools--deployment--configuration/browse Remot ...

  8. 关于CSS中的定位使用子绝父相(子类绝对位置和父类相对位置)

    关于CSS中的定位使用子绝父相(子类绝对位置和父类相对位置) 欢迎转发,但是请填写原博客地址https://www.cnblogs.com/JNovice/p/9536910.html  前言:最近在 ...

  9. ASP&period;NET EF 延迟加载,导航属性延迟加载

    ASP.NET EF 延迟加载,导航属性延迟加载   EF(EntityFramework)原理:属于ORM的一种实现 通过edmx文件来查看三部分:概念模型,数据模型,映射关系,上下文DbConte ...

  10. 用path动画绘制水波纹

    用path动画绘制水波纹 效果 源码 // // ViewController.m // PathAnimation // // Created by YouXianMing on 15/7/3. / ...