关于struts中Ognl和iterator配合再次理解
Person.jsp (struts.xml中省略)
package com.mzy.entity;
public class Person {
private String name;
private String sex;
private int age;
public Person() {
super();
}
public Person(String name, String sex, int age) {
super();
this.name = name;
this.sex = sex;
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
@Override
public String toString() {
return "Person [name=" + name + ", sex=" + sex + ", age=" + age + "]";
}
}
TagPersonAction.java
package com.mzy.tag;
import java.util.ArrayList;
import java.util.List;
import com.mzy.entity.Person;
import com.opensymphony.xwork2.ActionSupport;
public class TagPersonAction extends ActionSupport{
private static final long serialVersionUID = 7351425024147100121L;
List<Person> persons;
public List<Person> getPersons() {
return persons;
}
public void setPersons(List<Person> persons) {
this.persons = persons;
}
public String execute() {
persons = new ArrayList<Person>();
String name = "aaa";
int age = 10;
String sex;
for (int i=0 ;i<10; i++) {
name = name + i;
age += i;
if (i%2 == 0) {
sex = "男";
} else {
sex = "女";
}
persons.add(new Person(name, sex, age));
}
return SUCCESS;
}
}
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>Person list start here!</title>
</head>
<body>
<table cellspacing="0" border="1">
<th>姓名</th>
<th>性别</th>
<th>年龄</th>
<!--
注意:
这里不写var的时候,默认是压入值栈中的!但是压入 值栈的每一次的person
默认都是iterator本身去取,当然也可以使用property去取值,但是有个地方出错了!!!
Person已经是在外面了!!
所以不是person.name 而是 name
不是person.age 而是age
... ...
如果是第一层,直接取值;如果是JavaBean的对象,直接Ognl直接会使用getter方法取值!
在使用struts的iterator循环时,不写var只会压到值栈中,写了var会在ActionContext中也压一份!
值栈中的每次的person对象,会被iterator在每次循环结束之后,从值栈中pop出来,但是ActionContext
的话,就是每次覆盖前一次,最后会保留最后一次的Person对象在ActionContext中!
-->
<s:iterator value="persons" var="person" status="s">
<%-- <s:debug></s:debug> --%>
<%-- <s:property/> --%>
<%-- <s:property/> --%>
<%-- <s:if test='#person.sex=="男"'> --%>
<s:if test='sex=="男"'>
<tr <s:if test="#s.odd">style="background-color:pink"</s:if>>
<td>
<%-- <s:property value="#person.name"/> --%>
<s:property value="name"/>
</td>
<td>
<%-- <s:property value="#person.sex"/> --%>
<s:property value="sex"/>
</td>
<td>
<%-- <s:property value="#person.age"/> --%>
<s:property value="age"/>
</td>
</tr>
</s:if>
</s:iterator>
<%-- <s:debug></s:debug> --%>
</table>
</body>
</html>
关于struts中Ognl和iterator配合再次理解的更多相关文章
- 在javascript中对于this指向的再次理解
总所周知,function () {}函数体内的this对象指向的是调用该函数的对象,那么我们看一下这个例子 <script> var length = 3; function fn () ...
- Struts中的OGNL和EL表达式笔记
Struts中的OGNL和EL表达式笔记 OGNL(Object-Graph Navigation Language),可以方便的操作对象属性的表达式语言. 1.#符号的用途 一般有三种方式: 1.1 ...
- 在Apache Struts中利用OGNL注入
前言 本文简要介绍了Apache Struts的OGNL注入缺陷,文章中介绍使用简单的应用程序复现OGNL注入.深入研究针对公共漏洞,并理解这类漏洞. 内容 安装Apache Tomcat服务器(入门 ...
- Struts中整合的强大Ognl学习(一)
测试使用了一个JavaBean的User,User中的Address单独封装再形成了一个JavaBean: 为了测试静态方法和静态变量调用,写了一个Util方法: 因为测试Ognl功能过多所以直接使用 ...
- Struts 2 OGNL
1.什么是OGNL? 2.Struts 2 OGNL 表达式 ====================== 华丽丽的分割线 ====================== 1.什么是OG ...
- Struts2中OGNL
什么是OGNL OGNL:Object Graph Navigation Language 对象导航图语言 开源项目,取代页面中Java脚本,简化数据访问 和EL同属于表达式语言,但功能更为强大 让 ...
- ES6中的迭代器(Iterator)和生成器(Generator)
前面的话 用循环语句迭代数据时,必须要初始化一个变量来记录每一次迭代在数据集合中的位置,而在许多编程语言中,已经开始通过程序化的方式用迭代器对象返回迭代过程中集合的每一个元素 迭代器的使用可以极大地简 ...
- 牛客网Java刷题知识点之Java 集合框架的构成、集合框架中的迭代器Iterator、集合框架中的集合接口Collection(List和Set)、集合框架中的Map集合
不多说,直接上干货! 集合框架中包含了大量集合接口.这些接口的实现类和操作它们的算法. 集合容器因为内部的数据结构不同,有多种具体容器. 不断的向上抽取,就形成了集合框架. Map是一次添加一对元素. ...
- struts中的数据校验
1.struts中如何进行数据校验 在每一个Action类中,数据校验一般都写在业务方法中,比如login().register()等.struts提供了数据校验功能.每个继承自ActionSuppo ...
随机推荐
- 【剑指offer】58 - II. 左旋转字符串
剑指 Offer 58 - II. 左旋转字符串 知识点:字符串: 题目描述 字符串的左旋转操作是把字符串前面的若干个字符转移到字符串的尾部.请定义一个函数实现字符串左旋转操作的功能.比如,输入字符串 ...
- Spring RestTemplate 之post请求
●post请求:在RestTemplate中,POST请求可以通过如下三个方法来发起,但post提交方式又有两种 formData 和 payLoad,而且接口设计与传统的浏览器使用的提交方式又有差异 ...
- Python+Requests+异步线程池爬取视频到本地
1.本次项目为获取梨视频中的视频,再使用异步线程池下载视频到本地 2.获取视频时,其地址中的Url是会动态变化,不播放时src值为图片的地址,播放时src值为mp4格式 3.查看视频链接是否存在aja ...
- DIV+css排版问题技巧总结---v客学院技术分享
DIV+css排版问题技巧总结 一.排版思路 1.从上到下,从左到右,从大到小. 2.首先确定排版分区,排除色块分布,然后再从简单的部分开始. 3.在某一块内将HTML部分写好 ...
- noip模拟23[联·赛·题]
\(noip模拟23\;solutions\) 怎么说呢??这个考试考得是非常的惨烈,一共拿了70分,为啥呢 因为我第一题和第三题爆零了,然后第二题拿到了70分,还是贪心的分数 第一题和第二题我调了好 ...
- Python基础之创建文件夹与删除文件夹。
参考链接:https://blog.csdn.net/weixin_43826242/article/details/87101436 创建目录结构 # 创建文件目录结构 def create_fol ...
- Easyui设置easyui-textbox不可编辑
转载自:https://blog.csdn.net/qq_23113521/article/details/78801689 在easyui里由于easyui-textbox被封装,通过一般的jque ...
- C#曲线分析平台的制作(三,三层构架+echarts显示)
本文依据CSDN另一位网友关于三层构架的简单搭建,基于他的源码进行修改.实现了三层构架合理结构,以及从数据库中传递数值在echarts显示的实验目的. 废话不多说,show me codes: 具体构 ...
- Wordpress 4.6 任意命令执行漏洞(PwnScriptum)
漏洞存在后台登录地方的找回密码页面:http://192.168.49.2:8080/wp-login.php?action=lostpassword 抓包进行修改包 输入一个存在的用户,然后点击获取 ...
- xss.haozi靶机
X00 <script>alert(1)</script> X01 </textarea><script>alert(1)</script> ...