[Tag] Jsp 2.x Tag - interface SimpleTag

之前我們介紹的Tag都是以實作interface Tag來達到效果。而Interface Tag有多個method,並且在不同的時候返回不同的值來控制流程。

但是當我們在實際使用的時候,通常來說我們不會需要控制這些流程,我們只會override doEndTag()而已,就為了這個要實作並且返回奇怪的數字看起來是在很麻煩。

因此在jsp 2.x之後,除了支援舊的格式以外,有多增加了一個interface叫做SimpleTag讓我們開發自定義tag的時候更加容易。

這一篇我們來看一下和interface Tag有什麼不一樣。

...繼續閱讀 »

[Tag]自定義標籤庫

我們目前已經看過了JSTL裡面的3個Tag。其實JSTL裡面還有兩個Tag,一個是用來處理XML的Tag,讓你可以對一個XML做類似於XPath的動作。還有一個是對資料庫做動作的tag。

這兩個Tag我跳過了,首先對DB可以做存取的Tag我覺的不應該是JSP頁面做的事情,而是Servlet做。因此我覺的只要知道有這個Tag就好,我個人會儘量不用。至於XML的tag有用,但是其實他和之前介紹core tag非常像,只是在Select是使用類似於xpath的概念去parse xml。因此,如果有需要在去看就可以。

今天,我希望來介紹一下基本自定義Tag所需要注意到的事情。

...繼續閱讀 »

[JSTL] 標準標籤庫的介紹


到目前來說我們已經介紹了JSP和Servlet的基本使用。相信初學著來說比較喜歡使用JSP來直接製作頁面。因為1對於畫面呈現上面來說,他比較好寫,2因為通常有寫過Web的人,jsp那種模式的寫法每一個Web框架應該都有類似的。所以做起來很方便。

不過對於大型專案來說,只靠jsp來寫web是不行的,因為很多code沒有辦法reuse,造成不好維護。因此現在越來越多框架,例如MVC的概念是希望每一個部份有特定的做處理,讓程式的維護更好做。

接下來要介紹的JSTL是jsp裡面的標準Tag,而這些能夠讓我們的jsp頁面只關注與View的部份,同時因為Tag可以被reuse,讓我們在維護上面更加容易。

...繼續閱讀 »

[Servlet] Filter - 強大的關卡控管人


寫過Web的人都有這種經驗,有些頁面在顯示內容的時候會希望先做過過濾再決定輸出內容(例如有些頁面只有登入著才能夠看到),或者希望記錄那一頁的點擊率。這些我們都能夠直接刻在Servlet裡面來達到,但是如果你有20個Servlet都需要驗證,難道那20個裡面都寫一樣的驗證邏輯(或者呼叫一樣的驗證邏輯)?

今天我們要來看看Servlet裡面的一個很強大的功能,能夠輕鬆解決這個問題,而它就是Filter。

...繼續閱讀 »

JSP - 隱藏物件和相關設定

在JSP頁面裡面有一些隱藏的物件。這些物件是jsp提供給你讓你能夠做到像在Servlet裡面一樣的事情,而我們這篇會個字介紹一下這些隱藏物件的作用和用法。

jsp像Servlet一樣,因此還記得我們在Servlet需要設定對應的route,而jsp預設是可以不用設定在web.xml裡面。可是,如果今天你希望透過設定的方式來設置 jsp頁面,這個也是可以的。

...繼續閱讀 »

JSP - Expression Language (EL)

從最早之前介紹了能夠在JSP裡面寫Java的Scriptlet Element,到讓程式碼可以重用的action element。但是這些方法寫起來還是不那麼的方便。作為最懶的一群人,每一次要取得session裡面的東西都要寫落落長的東西不是很煩,所以Expression Language(EL)就誕生了。

今天,我們就要來看看EL給我們帶來的便利。

...繼續閱讀 »

JSP - Action Elements

Action Element的結構都是

從上面看起來,就像是普通的html,只不過有特別的prefix在前面。其實,在上一篇我們提到Directive 的taglib,其實就是這種概念。

因此,Action Element就像名字一樣,都是帶有一個特別目的的Element。最終目的是達到Code Reuse。

...繼續閱讀 »

JSP - 概觀介紹

JSP的全稱是Java Server Page,而它和Servlet一樣,都是HttpServlet(Servlet API)的子類。那他和Servlet差異是什麼呢?其實主要是工作的面向不同

在介紹Servlet的時候,每當我們需要顯示內容回傳給客戶端的時候,我們都透過了out.println()的方法。光要寫一個基本的html頁面就很痛苦了,更別說如果要加上Javascript,或者比較複雜的模板,利用Servlet來做更本就是夢魘。通常我們網站都會有部份是一樣的,例如頁首和頁尾,可以想像的到如何用out.println()把這些都拼起來的畫面嗎?我相信程式設計師應該會崩潰吧。更別說如果要維護和修改。

當初的Sun看到問題,所以才有了JSP的誕生。

JSP的面向是處理View的部份,也就是實際把動態產生的內容呈現給客戶端的處理。這樣的做法是我們能夠把邏輯和顯示層分開,達到更容易維護,並且做到sepreation of concerns。

...繼續閱讀 »

Servlet -頁面跳轉

到目前為止,我們已經介紹了很多Servlet相關的內容,相信對於如何使用Servlet有一個比較好的基礎了。

說真的,現在純粹用Servlet來寫網站的應該不多,大部份都是使用一些Framework來寫,那麼,為什麼還要介紹這麼多關於Servlet呢?原因是,大部份的Framework都是站在Servlet上面。換句話說,Framework只是在Servlet上面多蓋上一層,讓我們更好操作,不過實際底層在跑還是Servlet。

講了這麼多,只是為了介紹今天的主題,也就是Servlet的轉址功能。

...繼續閱讀 »

Servlet - 生命週期

Servlet的生命週期或許乍看之下不是那麼重要,不過當我們需要精進使用能力的時候就會需要瞭解運作原理,而生命週期是非常重要的一環。在這一篇我會介紹Servlet的啟動流程和會經歷的一些方法,方便我們在不同階段執行我們需要的動作。

...繼續閱讀 »