日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

struts2教程(10)

發(fā)布時間:2025/3/20 编程问答 17 豆豆
生活随笔 收集整理的這篇文章主要介紹了 struts2教程(10) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

struts2 標(biāo)簽庫

tag-reference.html 就是 struts2標(biāo)簽規(guī)范

一、 通用標(biāo)簽庫 的學(xué)習(xí)

<s:property> 解析ognl表達(dá)式,設(shè)置默認(rèn)值,設(shè)置內(nèi)容是否HTML轉(zhuǎn)義


<s:set> 向四個數(shù)據(jù)范圍保存數(shù)據(jù)


<s:iterator> 遍歷值棧中數(shù)據(jù)


<s:if> <s:elseif> <s:else> 進(jìn)行條件判斷 -------- elseif可以有多個


<s:url> 進(jìn)行URL重寫(追蹤Session) ,結(jié)合s:param進(jìn)行參數(shù)編碼


<s:url action="download" namespace="/" var="myurl">

<s:param name="filename" value="%{'MIME協(xié)議簡介.txt'}"></s:param>

</s:url>


<s:property value="#myurl"/>


<s:a> 對一個鏈接 進(jìn)行參數(shù)編碼


<s:a action="download" namespace="/" >下載MIME協(xié)議簡介.txt

<s:param name="filename" value="%{'MIME協(xié)議簡介.txt'}"></s:param>

</s:a>

OGNL 了解部分 : 支持賦值操作和表達(dá)式串聯(lián) 、 操作集合對象

1) 在值棧中保存一個對象

<s:property value="price=1000,name='冰箱',getPrice()"/> 自動查找值棧中price name 屬性 為其賦值

2ognl操作集合

<s:property value="products[0].name"/> 訪問集合第一個元素name屬性

<s:property value="map['name']"/> 訪問mapkeyname的值


{} 直接構(gòu)造List元素、 #{}直接構(gòu)造 Map元素

<s:iterator value="{'aaa','bbb'}" var="s">

<s:property value="#s"/>

</s:iterator>


<s:iterator value="#{'ccc':'111','ddd':'222' }" var="entry">

<s:property value="#entry.key"/>

</s:iterator>

UI標(biāo)簽庫的學(xué)習(xí) (Form標(biāo)簽)

使用struts2 form標(biāo)簽 好處 : 支持?jǐn)?shù)據(jù)回顯 , 布局排班(基于Freemarker模板定義 )


1、struts2 表單標(biāo)簽 value屬性。 必須寫%{} 進(jìn)行設(shè)值

使用struts2表單標(biāo)簽前, 必須配置StrutsPrepareAndExecuteFilter

The Struts dispatcher cannot be found. This is usually caused by using Struts tags without the associated filter. Struts tags are only usable when the request has passed through its servlet filter, which initializes the Struts dispatcher needed for this tag

<s:form> 表單標(biāo)簽

<s:form action="regist" namespace="/" method="post" theme="xhtml"> --- theme="xhtml"默認(rèn)布局樣式

<s:textfield> 生成 <input type="text" >

<s:password > 生成 <input type="password" >

<s:submit type="submit" value="注冊"/>生成 <input type="submit" >

<s:reset type="reset" value="重置" />生成 <input type="reset" >

<s:textarea> 生成 <textarea>多行文本框

<s:checkboxlist> 生成一組checkbox


2、使用ognl構(gòu)造Map (看到值和提交值 不同時)

<s:checkboxlist list="#{'sport':'體育','read':'讀書','music':'音樂' }" name="hobby"></s:checkboxlist>

<s:radio> 生成一組radio

3、使用 ognl構(gòu)造List (看到內(nèi)容和提交值 相同時)

<s:radio list="{'',''}" name="gender"></s:radio>

<s:select> 生成一個<select>

<s:select list="{'北京','上海','南京','廣州'}" name="city"></s:select>

4、struts2 開發(fā) 密碼框 默認(rèn)不回顯

<s:password name="password" id="password" showPassword="true"/>

5、 頁面元素主題設(shè)置

default.properties ---- struts.ui.theme=xhtml 設(shè)置struts2 頁面元素使用默認(rèn)主題

struts.ui.templateSuffix=ftl 默認(rèn)模板引擎 Freemarker

修改主題

方式一 <s:textfield name="username" label="用戶名“theme="simple"></s:textfield> 只對當(dāng)前元素有效

方式二 <s:form action="" method="post" namespace="/uitheme="simple">form中所有元素有效

方式三 struts.xml

<constant name="struts.ui.theme" value="simple"></constant> 修改默認(rèn)主題樣式,頁面所有元素都有效

優(yōu)先級 方式一 > 方式二 >方式三

三、防止表單重復(fù)提交原理

表單防止重復(fù)提交

表單重復(fù)提交 危害:刷票、 重復(fù)注冊、帶來服務(wù)器訪問壓力(拒絕服務(wù))

1、 在jsp通過 <s:token />生成令牌號

生成表單隱藏域

將令牌號保存到Session

2、 通過struts2提供 tokenIntercetor攔截器 完成請求中令牌號 和 session中令牌號 比較

<interceptor name="token" class="org.apache.struts2.interceptor.TokenInterceptor"/><action name="token" class="cn.itcast.struts2.TokenAction"><result>/index.jsp</result><!-- 重新定義攔截器 --><interceptor-ref name="defaultStack"></interceptor-ref><interceptor-ref name="token"></interceptor-ref></action>

3、 當(dāng)表單重復(fù)提交時,token攔截器自動跳轉(zhuǎn)result name="invalid.token"

通過 <s:actionError/> 顯示錯誤信息

覆蓋重復(fù)提交信息 struts.messages.invalid.token=您已經(jīng)重復(fù)提交表單,請刷新后重試

四、Struts2 內(nèi)置json插件

知識點 struts2Ajax開發(fā)

Ajax開發(fā)客戶端 和 服務(wù)器交互數(shù)據(jù)格式 --------------- json

json 是最輕量級,體積最小

服務(wù)器將程序處理結(jié)果,轉(zhuǎn)換為json格式發(fā)送給 客戶端

json-lib flexjson 工具類庫

struts2-json-plugin-2.3.7.jar

案例一: 輸入用戶名,鼠標(biāo)點擊密碼(觸發(fā)用戶名元素離焦事件),使用Ajax 將用戶名發(fā)送到服務(wù)器 判斷是否存在

jquery 1.4 1.6新特性比較多 (企業(yè)主流 1.4

使用struts2 json插件

要點1 <package> extends 繼承json-default

要點2 <result> type 類型寫json

struts2 json插件 ,默認(rèn)將值棧root頂端對象 所有屬性返回(get方法)

不想將company屬性返回 ,在get方法上@JSON(serialize=false)

案例二 :服務(wù)器將商品對象 List列表返回

如果Action 實現(xiàn)ModelDrivenmodel對象就是值棧棧頂對象,struts2 json插件默認(rèn) 將model返回

通過設(shè)置root屬性,修改插件返回 根對象

* <param name="root">action</param> Action作為根對象返回

只想要每個商品的 name 屬性

方案一: pnumpriceget方法上 添加@JSON(serialize=false) =========只要@JSON注解,屬性將永遠(yuǎn)不能參與json返回

方案二: 設(shè)置 includeProperties屬性

<param name="includeProperties">products\[\d+\]\.name</param>

總結(jié)

以上是生活随笔為你收集整理的struts2教程(10)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。