2009年3月22日 星期日

Are you ASP.NET 3.5 (aspx) or JSP? (In IIS7)

這禮拜在淡大資訊中心授課,介紹到ASP.NET 的HttpRuntime的觀念以及設計,突然想起百敬老師之前曾經說過的一個故事,也就是偽裝程式,簡單來說就是使用設計ASP.NET應用程式(aspx的附檔名),但是在系統上線時,將所有的副檔名改變為 jsp的副檔名,讓使用者瀏覽網頁時看到的是JSP的網頁程式。

或許這個技術並不是最新的,但現在想起來卻是很有趣,因此在淡大上課時,就突然一時興起,教了這一招有趣的小技巧,不過,這邊有一些設定與IIS的版本有別,windows 2008 和Vista中的IIS7.0和windows2003 的IIS6,在IIS的設定上介面有些許的不同。亞當斯的NB裝的是Vista,所以我先示範IIS7的設計方式好了。

首先,建立一個位在IIS上的網站,並設計一些aspx可以快速達到的功能,例如使用ListView針對資料庫的資料實作新、刪、修、查功能。

01-一般aspx的功能

接著設定IIS中的"處理常式對應",將jsp副檔名的對應直接選用aspx所對應的,最簡單的方式就是先找到aspx所對應的處理常式,然後將之複製一份給jsp附檔名來對應,如下圖所示:

02-IIS中aspx對應的處理常式 03-IIS中jsp對應的處理常式

此時因為ASP.NET 3.5會使用JIT的編譯方式執行,所以在網站動態編譯網頁程式時,必須讓它認得jsp副檔名所對應的編譯提供者應該跟aspx一樣,這邊設定為"PageBuildProvider"。因此可以在web.config中設定buildProviders項目。

<compilation debug="false">
<buildProviders>
<add extension=".jsp"
type="System.Web.Compilation.PageBuildProvider"
/>
</buildProviders>
</compilation>


設定好之後就大功告成了,最後就是把aspx直接改為jsp就好。咱們來瀏覽JSP網頁吧,注意看下列網址中的副檔名是JSP唷,嘻嘻!!(這次的偽裝真成功,ㄎㄎ,以後想要設計什麼系統盡管告訴亞當斯,嘿嘿),^_^


04-JSP網頁