(十一)Appfuse与SiteMesh--JAVA程式快速建立一个网站
Appfuse这个范本网站结合了很多的Plugin,其中的一项Plugin叫做SiteMesh,这个SiteMesh Plugin的功能,就是帮助开发人员在网页的制作上,将Header与Footer另外切出来,这个可以让开发人员专心在每个页面的制作上,而且如果Header或Footer需要变更时,只要变更一页即可,不需要每一页去进行修改。
SiteMesh在Appfuse中的宣告
在实作SiteMesh时,必须在web.xml中宣告sitemesh的filter,这个部份Appfuse已经帮我们处理好了,Appfuse在web.xml中宣告sitemesh的内容为:
之后我们就可以在WEB-INF/decorators.xml里面设定对应的网页。
SiteMesh在Appfuse中的使用
在decorators.xml中,Appfuse帮我们定义好网页的Header、footer了,如下图:
-
第一行宣告了预设的资料夹。
-
第二~七行,宣告这一类的网址不使用sitemesh机制。
-
在第八~十行,宣告所有的网址(/*)都要套用defalut.jsp(在/decorators的资料夹下)。
而展开default.jsp后可以看到跟sitemesh有关的内容如下:(名词说明:范本页→default.jsp,内页→实际要读取的页面,被镶嵌在范本页中的JSP)
首先是被include进来的taglib.jsp里宣告了sitemesh的JSTL:
Default.jsp的第十行:
将内页的的title放置在范本页的这里;
第十五行,将内页的head放置在这里,不过因为default.jsp的jQuery在17才会import进来,所以会导至我们内页吃不到jQuery,所以笔著会把十五行的<decorator:head />移到</head>的上方,这样我们的内页在使用JQuery时才会不有问题,如下图:
第49行(因为上方有加了一行,原本是48行),将内页的body放在这里。
所以最后使用者看到的Header与Footer是以default.jsp为主,而实际上页面显示的资料,则根据内页的JSP的不同而变化,这就是sitemesh在Appfuse中的应用。