struts2 Tags 堆栈分析

本文详细介绍了Struts2框架中的各种标签库使用方法,包括property、set、bean、include、if、iterator等标签的使用场景及注意事项。通过实例演示如何进行变量赋值、条件判断、循环遍历等功能。

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

 1. property: <s:property value="username"/>


 2. property 取值为字符串: <s:property value="'username'"/>


 3.  property 设定默认值: <s:property value="admin" default="管理员"/>


 4. property 设定HTML: <s:property value="'<hr/>'" escape="true"/> 输出 <hr/>

 

 5. set 设定adminName值(默认为request 和 ActionContext): <s:set var="adminName"  value="username" />

set 从request取值: <s:property value="#request.adminName" />
set 从ActionContext取值: <s:property value="#adminName" />

set 设定范围: <s:set var="adminPassword" value="password" scope="session"/>

set 从相应范围取值: <s:property value="#session.adminPassword"/>

说明:set 在以前的版本中有name id,但是在2.1版本开始不推荐使用,用var代替.实际var表示把变量压入栈actioncontext. 官方这样说明var的:Name used to reference the value pushed into the Value Stack;

这样我们可以用#key来访问.

 

6.  bean标签

 <s:bean name="com.awf.tags.Dog"  var="mydog">
    <s:param name="name" value="'pp'"></s:param>
    <s:property value="name"/>
   </s:bean>

 

说明:注意到pp用单引号,因为这时要真正用到String,如果没有加单引号,struts2会默认用OGNL到ValueStack找值.

对于为什么可以<s:property value="name"/>(取到pp)这样取值,可以做个小实验在set标签里加入<s:debug/>,这样你可能看到整个栈数据的出入,此时栈顶当然是mydog对象,这个标签执行完后就可以出栈了,这时action又保持在栈顶了.

此时mydog被存入到actioncontext栈中,所以要取值要用到#号了.

取值:<s:property value="#mydog.name/>

 

7. include标签

 <s:include value="/index.html"></s:include>

这里value的默认处理方式是要内容当做String,不是OGNL,如果这时要用OGNL可以用%,这就是%的实际意义了,其实上面所讲的标签也可以使用%,OGNL对于那些默认使用OGNL的标签会忽略%号,真搞不懂为什么全部都统一,这样我们就不用记这么多了^^,下面是具体使用方法:

<s:set var="incPage" value="%{'/index.html'}" />
 <s:include value="%{#incPage}"></s:include>

 

现在回到include标签,这个标签真的不好用对中文的支持不好,可能有BUG,所以还是用jsp自带的动态包含/静态包含.

 

8. if elseif else标签

定义变量 num= <s:set var="num" value="'100'"/>   set定义的变量存在ActionContext栈中

<s:if test="#num< 0"> 小于0 </s:if>
 <s:elseif test="#num <50"> 小于50 </s:elseif>
  <s:else>大于50</s:else>

 

<s:if test="#parameters.aaa == null">null</s:if>

 

这里说到#parameters不得不提一下,我们在地址栏输入的变量会存在ActionContext栈中,如xx/sdfds.jsp?name=1

这样我们可能用OGNL这样取值#parameters.name ,注意这里取出来的是一个集合,如果你这样访问xx/sdfds.jsp?name=1&name=2,你可以发现可以取出两个值.因为这样所以在写程序时我样最好精确定位像这样#parameters.name[0],就算你能保证只能一个值,也要这样.

 

9. iterator标签,遍历集合

<s:iterator value="{1, 2, 3}" >
   <s:property/>
</s:iterator>

 

自定义变量:

<s:iterator value="{'aaa', 'bbb', 'ccc'}" var="x">
   <s:property value="#x.toUpperCase()"/> |
  </s:iterator>

 

<s:iterator value="{'aaa', 'bbb', 'ccc'}" status="status">
   <s:property/> |
   遍历过的元素总数:<s:property value="#status.count"/> |
   遍历过的元素索引:<s:property value="#status.index"/> |
   当前是偶数?:<s:property value="#status.even"/> |
   当前是奇数?:<s:property value="#status.odd"/> |
   是第一个元素吗?:<s:property value="#status.first"/> |
   是最后一个元素吗?:<s:property value="#status.last"/>
   <br />
  </s:iterator>

 

说明:偶数和其数不是下标,下标0其实是第一个当然是奇数了.

 

遍历map:

<s:iterator value="#{1:'a', 2:'b', 3:'c'}" var="x">
   <s:property value="#x.key"/> | <s:property value="#x.value"/> <br />
  </s:iterator>

 

说明:这里自定义的map要加#号,看下面例子:

<s:set var="m" value="#{1:'oo',2:'kk'}"/>
 <s:property value="#m[1]"/>

 

查了一下官方文档,没找到对map定义的说明,为什么要用到#号?这样定义有什么含义呢?

 

 

内容概要:该PPT详细介绍了企业架构设计的方法论,涵盖业务架构、数据架构、应用架构和技术架构四大核心模块。首先分析了企业架构现状,包括业务、数据、应用和技术四大架构的内容和关系,明确了企业架构设计的重要性。接着,阐述了新版企业架构总体框架(CSG-EAF 2.0)的形成过程,强调其融合了传统架构设计(TOGAF)和领域驱动设计(DDD)的优势,以适应数字化转型需求。业务架构部分通过梳理企业级和专业级价值流,细化业务能力、流程和对象,确保业务战略的有效落地。数据架构部分则遵循五大原则,确保数据的准确、一致和高效使用。应用架构方面,提出了分层解耦和服务化的设计原则,以提高灵活性和响应速度。最后,技术架构部分围绕技术框架、组件、平台和部署节点进行了详细设计,确保技术架构的稳定性和扩展性。 适合人群:适用于具有一定企业架构设计经验的IT架构师、项目经理和业务分析师,特别是那些希望深入了解如何将企业架构设计与数字化转型相结合的专业人士。 使用场景及目标:①帮助企业和组织梳理业务流程,优化业务能力,实现战略目标;②指导数据管理和应用开发,确保数据的一致性和应用的高效性;③为技术选型和系统部署提供科学依据,确保技术架构的稳定性和扩展性。 阅读建议:此资源内容详尽,涵盖企业架构设计的各个方面。建议读者在学习过程中,结合实际案例进行理解和实践,重点关注各架构模块之间的关联和协同,以便更好地应用于实际工作中。
资 源 简 介 独立分量分析(Independent Component Analysis,简称ICA)是近二十年来逐渐发展起来的一种盲信号分离方法。它是一种统计方法,其目的是从由传感器收集到的混合信号中分离相互独立的源信号,使得这些分离出来的源信号之间尽可能独立。它在语音识别、电信和医学信号处理等信号处理方面有着广泛的应用,目前已成为盲信号处理,人工神经网络等研究领域中的一个研究热点。本文简要的阐述了ICA的发展、应用和现状,详细地论述了ICA的原理及实现过程,系统地介绍了目前几种主要ICA算法以及它们之间的内在联系, 详 情 说 明 独立分量分析(Independent Component Analysis,简称ICA)是近二十年来逐渐发展起来的一种盲信号分离方法。它是一种统计方法,其目的是从由传感器收集到的混合信号中分离相互独立的源信号,使得这些分离出来的源信号之间尽可能独立。它在语音识别、电信和医学信号处理等信号处理方面有着广泛的应用,目前已成为盲信号处理,人工神经网络等研究领域中的一个研究热点。 本文简要的阐述了ICA的发展、应用和现状,详细地论述了ICA的原理及实现过程,系统地介绍了目前几种主要ICA算法以及它们之间的内在联系,在此基础上重点分析了一种快速ICA实现算法一FastICA。物质的非线性荧光谱信号可以看成是由多个相互独立的源信号组合成的混合信号,而这些独立的源信号可以看成是光谱的特征信号。为了更好的了解光谱信号的特征,本文利用独立分量分析的思想和方法,提出了利用FastICA算法提取光谱信号的特征的方案,并进行了详细的仿真实验。 此外,我们还进行了进一步的研究,探索了其他可能的ICA应用领域,如音乐信号处理、图像处理以及金融数据分析等。通过在这些领域中的实验和应用,我们发现ICA在提取信号特征、降噪和信号分离等方面具有广泛的潜力和应用前景。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值