Struts2基础之十二:Struts2标签总结、实例

本文详细解析了Struts2项目中常用的标签,包括s:property、s:set、s:bean、s:include、s:fielderror、s:if、s:iterator等,并对每个标签的功能和使用进行了深入探讨。



一:JSP显示页

除了UI标签,其余的标签总结的比较全了:

1:s:property

<!--<a href="http://127.0.0.1:8080/Struts2Project/tags?username=abc&password=123">http://127.0.0.1:8080/Struts2Project/tags?username=abc&password=123</a><br/>-->
<h2>一.s:property</h2>
<!-- 1.OGNL表达式 -->
1.username:<s:property value="username"/> <br/>
<!-- 2.把值强制转成字符串(不受OGNL限制),对应的强制转成OGNL用 %{} -->
2."'username'":<s:property value="'username'"/><br/>
<!-- 3.虽然context里没有,但是能通过default写入临时的 -->
3.value="admin" default="管理员":<s:property value="admin" default="管理员"/><br/>
<!-- 4.escape如果是TRUE,就会把hr当做字符串打出来。FALSE就会显示“横线” -->
4.value="《hr》" escape="true":<s:property value="'<hr/>'" escape="true"/><br/>
value="《hr》" escape="false":<s:property value="'<hr/>'" escape="false"/><br/>


2:s:set

	<h2>二.s:set</h2>
	<!-- 1.把username的值,赋给adminName -->
	1.var="adminName" value="username":<s:set var="adminName" value="username"/><br/>
	<!-- 如果加上单引号'',就是把“username”字串传递过去,不加单引号就相当于%{}-->
	var="adminName" value="username":<s:set var="adminName" value="'username'"/><br/>
	<!-- 结果 -->
	value="#request.adminName":<s:property value="#request.adminName" /><br/>
	value="#adminName":<s:property value="#adminName" /><br/>
	<!-- 2.把password的值,赋给adminPassword,并且限制范围是:session -->
	<!-- 不设置的话默认是action,就是request和application中各放置一个 -->
	2.var="adminPassword" value="password" scope="page":<s:set var="adminPassword" value="password" scope="page"/> <br/>
	EL%=%取值:<%=pageContext.getAttribute("adminPassword")%><br/>
	var="adminPassword" value="password" scope="session":<s:set var="adminPassword" value="password" scope="session"/> <br/>
	EL%=%取值:<%=session.getAttribute("adminPassword")%><br/>
	<!-- 这#取不到,因为之前放在session中了,指定值栈(属性范围)才能取到 -->
	value="#adminPassword":<s:property value="#adminPassword"/><br/>
	value="#session.adminPassword":<s:property value="#session.adminPassword"/><br/>
	


3:s:bean

	<h2>三.s:bean</h2>
	<!-- 1.往VO中传值,name和age是VO中的属性(仍然有‘’和OGNL的问题) -->
	<s:bean name="com.rt.demo.VO.VOUser" var="theUser"> 
		<s:param name="age" value="1"> </s:param>
		<s:param name="name" value="'张三'"> </s:param>
	</s:bean> <br/>
	<!-- 2.取出属性,返回toString() -->
	"#theUser":<s:property value="#theUser" />
	<br/>


4:s:include

	<h2>四.s:include</h2>
	<s:set name="incPage" value="'/some.jsp'" />
	<s:include value="%{incPage}" /><br/>
	

我包含的页面包括中文,没有出现传说中的乱码



5:s:fielderror

	<h2>五.s:fielderror</h2>
	<s:fielderror name="fielderror" /><br/>


6:s:if , s:else

	<h2>六.s:if elseif else</h2>
	<!-- 1.判断分支 -->
	value="#theUser.age":<s:property value="#theUser.age" /><br/>
	if-else:<s:if test="#theUser.age>0"> s:if输出>0 </s:if> 
	<s:else>s:else输出</s:else><br/>
	<!-- 2.测试有无(abc可以有多个,所以要 取0号) -->
	<s:if test="#parameters.abc[0] == null"> 不存在abc </s:if> <br/>


7:s:iterator

	<h2>七.s:iterator</h2>
	<!-- 1.测试遍历 -->
	1.value="{1,2,3}" :<s:iterator value="{1,2,3}" >
		<s:property/> 【分割符】
	</s:iterator><br/>
	<!-- 2.定义变量-->
	2.var="x":<s:iterator value="{'aa','bb','ccc'}" var="x">
		<s:property value="#x.toUpperCase()"/> 
	</s:iterator><br/>
	<!-- 3.用status-->
	3.status:<s:iterator value="{'aa','bb','ccc'}" var="x" status="s">
		遍历过的数目:<s:property value="#s.count"/> ,
		当前索引:<s:property value="#s.index"/> ,
		当前索引是偶数?:<s:property value="#s.even"/> ,
		是奇数?:<s:property value="#s.odd"/> ,
		是第一个元素?:<s:property value="#s.first"/> ,
		是最后一个?:<s:property value="#s.last"/> ,
		<br/>
	</s:iterator><br/>
	<!-- 4.Map,定义时必须要多一个#井号-->
	4.Map:<s:iterator value="#{1:'aa',2:'bb',3:'ccc'}" var="x">
		<s:property value="#x.key"/> 【分割】 <s:property value="#x.value"/> <br/>
	</s:iterator><br/>

8:s:debug

	<s:debug/> 

注意:
用var的话,就放在context里了,其他地方也能访问得到
value=中要“‘名称’”,强制指定成字符串

$#%区别
$用于struts.xml的动态分配
#用于取得valueStack

%{}把string强转成OGNL




二:actin,和VO

action中只有username和password俩属性,配上setter&getter

VO中也是只有 name和age俩属性








评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值