博客
关于我
Struts2-从值栈获取list集合数据(三种方式)
阅读量:518 次
发布时间:2019-03-08

本文共 1889 字,大约阅读时间需要 6 分钟。

创建User封装数据类

在Java开发中,封装数据类是非常常见的做法,可以有效地将数据与业务逻辑分离开来,便于管理和维护。以下是基于JavaBean的规范,创建一个简单的User数据类:

public class User {

private String username;
private String password;

public String getPassword() {      return password;  }  public void setPassword(String password) {      this.password = password;  }  public String getUsername() {      return username;  }  public void setUsername(String username) {      this.username = username;  }

}

创建ValueStackAction逻辑操作类

在Struts框架中,Action类是处理逻辑业务的核心类。值栈(ValueStack)是一种在Struts中用于存储和传递数据的机制,可以用来实现数据的上下文存储和传递。本文将创建一个ValueStackAction用于管理用户数据:

import cn.web.body.User;

import com.opensymphony.xwork2.ActionSupport;
import java.util.ArrayList;
import java.util.List;

public class ValueStackAction extends ActionSupport {

private List
list = new ArrayList
(); public List
getList() { return list; } @Override public String execute() { User user = new User(); user.setUsername("k1"); user.setPassword("hao"); list.add(user); User user1 = new User(); user1.setUsername("k2"); user1.setPassword("zms"); list.add(user1); return "success"; }

}

配置Struts.xml

Struts框架的配置文件用于定义动作和其对应的执行流程。本文中,配置文件的目的是定义一个用户管理的动作,并将执行结果返回给指定的JSP页面:

/WebContent/ValueStack.jsp

第一种方式:创建JSP文件,核心代码如下

<s:property value="list[0].username" />

<s:property value="list[0].password" />

Username:
Password:

第二种方式:使用iterator遍历列表

<%@ taglib prefix="s" uri="/WEB-INFtl/struts-tags.jar" %>

Username:
Password:

第三种方式:使用iterator和变量

<%@ taglib prefix="s" uri="/WEB-INFtl/struts-tags.jar" %>

Username:
Password:

流程说明:通过迭代器遍历的方式,遍历list集合中的每一个User对象,然后进行输出。在第三种方式中,我们使用Context对象

特点:该方式最为常用。遍历值栈list集合,得到每个User对象。这种方式的特点是

  • 不需要使用root来获取数据
  • 可以直接通过写ognl表达式来获取数据
  • 使用#表示context中的数据,提高了数据获取的效率

值栈默认是一个Map实现,里面存储的将是代码中Var属性对应的值与Key的映射关系。这种做法有助于减轻根值栈的压力,提高数据在Context中的存储效率。

转载地址:http://aeuiz.baihongyu.com/

你可能感兴趣的文章
浅谈持续集成(CI)、持续交付(CD)、持续部署(CD)
查看>>
HDU4814——数学,模拟进制转换
查看>>
一些JavaSE学习过程中的思路整理(二)(主观性强,持续更新中...)
查看>>
JavaScript中如何给按钮设置隐藏与显示属性
查看>>
Python——5函数
查看>>
C++扬帆远航——1
查看>>
上周热点回顾(5.3-5.9)
查看>>
测试网络联接状况常用命令 ping 使用方法介绍
查看>>
【Bootstrap5】精细学习记录
查看>>
面试官:这些错误都没见过,还敢说会安装Elasticsearch?
查看>>
Java复习面试指南-06为什么要进行数据类型转换?什么情况下会进行自动类型转换?
查看>>
[源码解析] 并行分布式任务队列 Celery 之 EventDispatcher & Event 组件
查看>>
QQ框架的搭建
查看>>
Hololens2开发笔记-捕获照片到内存并上传至服务器(unity)
查看>>
OpenCV4(6)-LookUpTable(LUT)查找表(C++,Python,JS)
查看>>
SkyWalking性能剖析
查看>>
vue动态组件与插件到底是什么?
查看>>
python3下安装jupyter kernel报错问题
查看>>
mybatis 简单学习
查看>>
操作系统学科复习图
查看>>