自定義標籤學習,會不會出現執行緒不安全,答案是no。

2021-09-30 06:52:55 字數 894 閱讀 4645

eg:struts.jsp

-------------------- greet message--------------------------------//(1)

starttag="ceshi">

helloworld

-------------------- greet message--------------------------------//(2)

helloworld

上面這段**為同一頁面使用了同乙個自定義標籤,在這裡討論一下針對在同一頁面(jsp)中多次使用同一標籤,jsp容器生成

對應標籤處理類的例項情況。為學習自定義標籤時,探索一下,具體開發中並不關注這樣的細節,應為jsp容器,已經做得很完善,使用自定義標籤不會出現多執行緒問題。

我們知道乙個jsp頁面在servlet容器中對應乙個例項。

那麼jsp頁面中的標籤的例項情況是怎麼樣的呢?

如上:(1)和(2)均是同一頁面中相同的自定義標籤,所不同的是兩個標籤的屬性不一樣(標籤體也不一樣,但這並不影響他們如何被例項化)

我做了下試驗:

當(1)和(2)的屬性名和個數均一樣時,那麼他們使用同一例項(不同客戶訪問時同一例項)

當(1)和(2)的屬性不一樣時,會例項不同的例項,進行相應處理。

這樣處理機制是:

如果你的屬性名和個數一樣,那麼在jsp頁面中即使多個地方用到這些標籤,但多標籤處理例項來說只是對應屬性的重新賦值。所以使用同一例項

不會存在,丟失屬性值的問題。

但不同屬性就不一樣了,如果不同屬性你用同一例項,那麼就會有些屬性值會保留原有例項的,造成錯誤。

關鍵點在於:每次執行標籤都會呼叫set***x()方法進行屬性賦值。

學習自定義標籤時,考慮會不會造成執行緒不安全,所以思考了一下。確定不會出現執行緒問題。

自定義標籤

由於字典的緣故,當前表中資料存的是字典表的code,所以在頁面顯示的時候需要再次進行轉換。於是我就想到了用標籤來解決這個問題。1.建立自己的標籤 public class displaytag extends tagsupport override public int doendtag throw...

自定義標籤

1 前段時間由於系統需要使用到資料字典,簡而言之就是用下拉將字典的內容顯示出來。我也是參考了一下別人的例項結合自己的業務需求,才將此功能實現。在此將大楷實現步奏記錄下來,以方便以後翻閱。2 在我們專案中使用了2張表來實現此功能。a csms t baseinfo 字典名稱 b csms t base...

自定義標籤

1 建立沒有標籤體的標籤 1 首先建立乙個jva類,去繼承 tagsupport,下面我們說一下 tagsupport 中的方法的作用 void setjspcontext jspcontext pc 這個方法中的引數就是pagecontext的父類,這個方法是由伺服器最先被呼叫的,然後我們得到我們...