關於Springmvc中include與Sitemesh裝飾器的使用
!!!轉載請註明出處=>http://www.cnblogs.com/funnyzpc/p/7283443.html
靜態包含:example:<%@include file="xxx.jsp"%>
檔案的包含是發生在 jsp向servlet轉換時期 ,相當於將jsp編譯成html靜態檔案,由於對包含的檔案不再編譯(直接拷貝到父頁面),則只產生一個class檔案。
動態包含:example<jsp:include page="xxx.jsp">
檔案的包含是發生在編譯時期,也就是將java檔案編譯為class檔案的時期 ,由於每次訪問頁面都會對jsp(-->java)進行編譯(當做一個單獨的頁面進行編譯),遂會產生多個class檔案。
一下將現身說法:
以上專案的目錄結構,包含檔案和被包含檔案屬同一個目錄=>
下面是訪問pbob.jsp(父頁面)後的效果,可以看到沒有物件訪問的情況下靜態包含和動態包含並沒有差別,內容可以正常包入,被包入的頁面的js也是正常執行的:
下面我將被包含的頁面都設定上值,在父頁面中訪問值,將值的作用域改成page,可以看到:動態包含的dd.jsp中的值無法在父頁面中被訪問到,而靜態包含的cc.jsp中的值可以被正常訪問:
以上只是jsp的簡單應用,如果是作為裝飾器,需要在被包含頁面設定值或賦值的時候一定要注意啦,說到裝飾器順便提一下sitemesh(現在是3.0版本),sitemesh是個很好用的裝飾器工具,
一個明顯的好處是不用像原生jsp那樣每個頁面都include,使用的時候直接在配置檔案中設定需要用到的裝飾的頁面,比如banner、menu等等~,非常方便,一下展示下xml中的基本裝飾配置:
同一類別的頁面可以使用同一個裝飾頁面,當然也可以排除用哪些頁面, 目前需要注意到的是sitemesh在大容量頁面的裝飾的時候會比較耗記憶體,根據實際專案需求慎重選擇~,當然還有其他裝飾器也很不錯,這裡就不一一介紹啦~