Struts 04

本文介绍了Struts2框架中的数据操作方法,包括如何使用contextMap存储和获取数据,以及Struts2对EL表达式的扩展使用。此外,文章还讲解了OGNL表达式的特殊用法,并对比了EL与OGNL的查找顺序。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、contextMap中的数据操作

这里写图片描述

1、存数据:
需要熟悉ActionContext和valueStack的API。框架为我们存数据。
1.1、利用ActionContext存数据

这里写图片描述

1.2、利用ValueStack存数据
a、如何获取ValueStack:

这里写图片描述

b、ValueStack中的getRoot()方法

c、CompoundRoot是什么:

这里写图片描述

d、栈操作:

这里写图片描述

2、取数据:用Struts2的标签(OGNL表达式)在JSP上(用的最多)
使用OGNL表达式来去,struts2的OGNL表达式必须写在struts2标签中。
2.1、使用s:property取数据
a、取contextMap中的数据,需使用#
b、取contextMap里面ValueStack中对象的属性:直接写属性名

这里写图片描述

这里写图片描述

如果遇有对象属性重名,可以通过OGNL表达式,选择查找的起始位置

这里写图片描述

这里写图片描述

特殊说明:当s:property不给定value属性时,默认取栈顶对象。

OGNL的使用总结:
1.取根中对象的属性,不使用#。
2.取contextMap中key的值,要使用#。

这里写图片描述

2.2、ValueStack的其他方法:
a、setValue方法

这里写图片描述

在Jsp页面上获取【张三】

这里写图片描述

b、set方法

这里写图片描述

这里写图片描述

细节问题:
当按照如下方式,往根中存放数据时,根中元素是什么顺序?

这里写图片描述

使用s:debug标签查看:

这里写图片描述

c、findValue:我们在Jsp上调用的都是findValue

这里写图片描述

二、Struts2对EL的改变
1、Struts2中使用EL的问题:
前提:
我们应该知道,如果我们没有往值栈(根)中放入数据的话,那么我们的动作类默认是在值栈的栈顶。

这里写图片描述

这里写图片描述

这里写图片描述

这里写图片描述

这里写图片描述

问题:
我们放到请求域中的属性,使用EL表达式取出来了。但是放到应用域中的属性,使用EL表达式没取出来。

2、关于EL问题的分析:
分析:
我们知道EL表达式是从四大域对象中依次查找属性。搜索范围是由小到大。page Scope————>request Scope————>sessionScope————>application Scope
但是通过测试发现,搜索完request范围后就没有继续搜索,而是返回了ValueStack中栈顶对象name属性的值。

3、Struts2中EL查找顺序改变总结:
EL表达式: page Scope————>request Scope————>sessionScope————>application Scope
OGNL表达式:page Scope————>request Scope————>valueStack(根中)————>contextMap————>sessionScope————>application Scope

4、OGNL的特殊说明:
注意:以下内容知道即可。

这里写图片描述

这里写图片描述

三、OGNL配合通用标签的其他使用
1、iterator标签(很重要)

这里写图片描述

这里写图片描述

这里写图片描述

2、OGNL投影(了解)
2.1、使用过滤条件投影

这里写图片描述

2.2、投影指定属性

这里写图片描述

3、Struts2中#,$,%符号的使用(重要)
3.1、#
a、取contextMap中key时使用,例如s:property value=”#name” />
b、OGNL中创建Map对象时使用,例如:s:radio list=”#{‘male’:’男’,’female’:’女’}” />

3.2、 aJSP使EL使 {name}
b、在xml配置文件中,编写OGNL表达式时使用,例如文件下载时,文件名编码。
struts.xml——>${@java.net.URLEncoder.encode(filename)}
3.3、%
在struts2中,有些标签的value属性取值就是一个OGNL表达式,例如s:property value=”OGNL Expression” />
还有一部分标签,value属性的取值就是普通字 符串,例如s:textfield value=”username”/>,如果想把一个普通的字符串强制看成时OGNL,就需要使用%{}把字符串套起来。
例如s:textfield value=”%{username}”/>。当然在s:property value=”%{OGNL Expression}” />也可以使用,但不会这么用。

4、其他标签
4.1、set标签

这里写图片描述

4.2、action标签

这里写图片描述

4.3、if标签,elseif标签 else标签

这里写图片描述

4.4、url和a标签(很有用)

这里写图片描述

这里写图片描述

四、Struts2的UI标签和主题
1、Struts2中UI标签的优势
自动的数据回显和错误提示功能
自带的简单样式和排版
2、表单标签的通用属性
说明:UI标签中value的取值一般都是字符串。
2.1、UI标签的通用属性

这里写图片描述

2.2、关于checkboxlist的使用:

这里写图片描述

这里写图片描述

这里写图片描述

2.3、UI标签的小案例以及模型驱动的分析

这里写图片描述

这里写图片描述

这里写图片描述

这里写图片描述

这里写图片描述

3、UI标签的模板(主题)
3.1、struts2中默认主题
默认主题的名称是XHTML,都是在struts的默认属性文件中定义着:default.properties

这里写图片描述

这里写图片描述

3.2、更改默认主题
a、更改表单某个元素的默认主题:使用的是表单元素的theme属性。

这里写图片描述

b、更改表单所有主题:使用的是form标签的theme属性。

这里写图片描述

c、更改全站所有表单主题:是在struts.xml配置文件中,覆盖原有主题的设置。

这里写图片描述

五、防止表单重复提交(拦截器)
1、回顾之前的解决办法:

这里写图片描述

这里写图片描述

2、Struts2中的解决办法:
2.1、使用重定向

这里写图片描述

遗留的问题:防不住后退,再提交。
2.2、使用s:token/>生成令牌配合token拦截器

这里写图片描述

这里写图片描述

这里写图片描述

遗留的问题:此种解决方式,是产生了错误之后再告知用户,你错了。
2.3、使用s:token/>生成令牌配合tokensession拦截器

这里写图片描述

内容概要:该论文聚焦于6G通信中20-100GHz频段的电磁场(EMF)暴露评估问题,提出了一种基于自适应可重构架构神经网络(RAWA-NN)的预测框架。该框架通过集成权重分析模块和优化模块,能够自动优化网络超参数,显著减少训练时间。模型使用70%的前臂数据进行训练,其余数据用于测试,并用腹部和股四头肌数据验证模型泛化能力。结果显示,该模型在不同参数下的相对差异(RD)在前臂低于2.6%,其他身体部位低于9.5%,可有效预测皮肤表面的温升和吸收功率密度(APD)。此外,论文还提供了详细的代码实现,涵盖数据预处理、权重分析模块、自适应优化模块、RAWA-NN模型构建及训练评估等内容。 适合人群:从事电磁兼容性研究、6G通信技术研发以及对神经网络优化感兴趣的科研人员和工程师。 使用场景及目标:①研究6G通信中高频段电磁暴露对人体的影响;②开发更高效的电磁暴露评估工具;③优化神经网络架构以提高模型训练效率和预测精度。 其他说明:论文不仅提出了理论框架,还提供了完整的代码实现,方便读者复现实验结果。此外,论文还讨论了未来的研究方向,包括扩展到更高频段(如300GHz)的数据处理、引入强化学习优化超参数、以及实现多物理场耦合的智能电磁暴露评估系统。建议读者在实际应用中根据具体需求调整模型架构和参数,并结合真实数据进行验证。
内容概要:本文是北京金融科技产业联盟发布的《基于数据空间的金融数据可信流通研究报告》,探讨了金融数据可信流通的现状、挑战和发展前景。文章首先介绍了金融数据在数字化转型中的重要性及其面临的隐私保护和安全挑战。接着,文章详细阐述了数据空间的概念及其发展历程,尤其是可信数据空间(TDM)在我国的发展情况。文中还深入分析了金融数据可信流通的典型应用场景、关键技术和方案架构,如数据访问控制、数据使用控制、智能合约、数据脱敏等。最后,文章展示了多个典型场景应用案例,如中信银行总分行数据流通管控、工银金租数据流通、银联安全生物特征支付等,并总结了当前可信数据空间建设中存在的法规、技术、标准和商业模式挑战,提出了相应的政策建议。 适用人群:金融行业从业者、数据安全管理人员、政策制定者、科技研发人员等。 使用场景及目标:①理解金融数据可信流通的重要性和挑战;②学习可信数据空间的关键技术和应用场景;③探索金融数据可信流通的具体实践案例;④了解当前可信数据空间建设的瓶颈和未来发展方向。 其他说明:本文不仅提供了详尽的技术和应用分析,还提出了具体的政策建议,有助于推动金融数据可信流通的健康发展。阅读本文可以帮助读者深入了解金融数据安全保护和高效利用的最佳实践,为相关政策和技术的发展提供参考。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值