網(wǎng)站打開(kāi)是404什么是電商?電商怎么做
基本概述:在JavaWeb中,Struts2標(biāo)簽庫(kù)是一個(gè)比較完善,而且功能強(qiáng)大的標(biāo)簽庫(kù),它將所有標(biāo)簽都統(tǒng)一到一個(gè)標(biāo)簽庫(kù)中,從而簡(jiǎn)化了標(biāo)簽的使用,它還提供主題和模板的支持,極大地簡(jiǎn)化了視圖頁(yè)面代碼的編寫(xiě),同時(shí)它還提供對(duì)ajax的支持,大大的豐富了視圖的表現(xiàn)效果。與JSTL(JSP Standard Library,JSP 標(biāo)準(zhǔn)標(biāo)簽庫(kù))相比,Struts2標(biāo)簽庫(kù)更加易用和強(qiáng)大。
PS:使用標(biāo)簽,需要引入Struts2核心jar包,在jsp頭部,加入<%@ taglib uri="/struts-tags" prefix="s" %>即可
Struts2標(biāo)簽庫(kù)的分類(lèi):
數(shù)據(jù)標(biāo)簽:
1、property ??
<!-- value:可選屬性,指定需要輸出的屬性值,如果沒(méi)有指定該屬性,則默認(rèn)輸出ValueStack棧頂?shù)闹?-->
<s:property value="cla2.num1"/>
2、set
注:set中的var沒(méi)有放到值棧中
<s:set var="test2" value="cla2"></s:set>
<!-- 取不到值,因?yàn)闃?biāo)簽代表的含義是,從值棧中去找test2的num1屬性值 -->
沒(méi)加#:<s:property value="test2.num1"/>
<!-- 能取到值,因?yàn)槿〉氖欠歉?#xff08;不是valuestack下)對(duì)象的num1屬性值 -->
加#:<s:property value="#test2.num1"/>
頁(yè)面效果:
3、push
push表示彈棧,標(biāo)簽體中即可拿到彈棧內(nèi)容,結(jié)束標(biāo)簽回歸原樣
push前:<s:property/>
<s:push value="result">push后:<s:property/>
</s:push>
push完成后:<s:property/>
頁(yè)面效果:
4、action
作用:是為了向后臺(tái)發(fā)請(qǐng)求拿數(shù)據(jù),加載初始化數(shù)據(jù)所用
<s:action name="tagAction" namespace="/sy" var="test3"></s:action>
test3:<s:property value="test3" />
test3.result:<s:property value="#test3.result" />
頁(yè)面效果:
5、url
? ? 作用:用于存放一個(gè)路徑
? ? 屬性:
? ? ? ? action:動(dòng)作名稱(chēng)
? ? ? ? namespace:名稱(chēng)空間
? ? ? ? var:取值是一個(gè)普通字符串。他會(huì)把a(bǔ)ction和namespace組成一個(gè)url作為value,把var的取值作為一個(gè)key,存入contextMap中
<s:url namespace="/sy" action="tagAction" var="test4"></s:url>
<s:a href="%{#test4}">GO</s:a>
6、param
屬于子標(biāo)簽,通常是配合action、url去使用的
<s:url namespace="/sy" action="tagAction" var="test5"><s:param name="test6">result</s:param><s:param name="test7" value="result"></s:param>
</s:url>
test5:<s:property value="test5" />
頁(yè)面效果:
7、date
? ?它是用于格式化輸出日期
? ? name屬性:取值是一個(gè)ognl表達(dá)式,表示要格式化的日期對(duì)象
? ? format屬性:指定格式
? ? var屬性:取值是一個(gè)普通的字符串。
? ? ? ? ? ?把格式化好的日期字符串作為value,把var的取值作為key。存入contextMap中
<%request.setAttribute("time", new Date());
%>
<s:date name="#request.time" format="yyyy-MM-dd"/>
8、debug
debug標(biāo)簽用于調(diào)試Struts2,使用它會(huì)在頁(yè)面中生成一個(gè)debug標(biāo)簽,點(diǎn)擊后會(huì)顯示服務(wù)器各種對(duì)象信息,包括值棧、ContextMap等
<s:debug></s:debug>
控制標(biāo)簽:
1、iterator
s:iterator是struts2的一個(gè)迭代標(biāo)簽,它的value屬性取值是一個(gè)OGNL表達(dá)式
var屬性:它的取值就是一個(gè)普通的字符串.
用了var:把每次遍歷的對(duì)象作為value,把var的值作為key,存入ContextMap中
沒(méi)用var:把每次遍歷的對(duì)象壓入棧頂,再下次遍歷之前彈棧(從棧頂移走)
<%request.setAttribute("names", new String[]{"zs","ls","ww"});
%>
<ul><s:iterator value="#request.names" var="i"><li><s:property value="#i" /></li></s:iterator>
</ul>
2、if/elseif/else
<%request.setAttribute("score", new Integer(30));%><s:if test="#request.score>80">A</s:if><s:elseif test="#request.score>60">B</s:elseif><s:else>C</s:else>
表單標(biāo)簽:
<s:form name="tagAction" namespace="/sy"><s:textfield label="姓名" name="uname"></s:textfield><!-- 寫(xiě)法一 --><s:radio list="{'男','女'}" value="'男'" label="性別" name="sex"></s:radio><!-- 寫(xiě)法二 --><s:radio list="#{1:'男',2:'女'}" value="2" label="性別" name="sex2"></s:radio><s:select list="#{1:'T211',2:'T204',3:'T237' }" label="班級(jí)" name="clazz"></s:select><!-- 單選復(fù)選框:往后臺(tái)傳的是boolean類(lèi)型 --><s:checkbox label="婚否" name="married"></s:checkbox><!-- 多選復(fù)選框 --><s:checkboxlist list="#{1:'吃',2:'喝',3:'玩' }" label="愛(ài)好" name="hobby"></s:checkboxlist><s:textarea label="備注" name="remark"></s:textarea></s:form>
頁(yè)面效果:
?