關於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在大容量頁面的裝飾的時候會比較耗內存,根據實際項目需求慎重選擇~,當然還有其他裝飾器也很不錯,這里就不一一介紹啦~