<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    badqiu

    XPer
    隨筆 - 46, 文章 - 3, 評論 - 195, 引用 - 0
    數據加載中……

    為velocity,freemarker提供jsp:include功能

    一.介紹

    使用JSP的都知道jsp:include指令,可以使用如下功能,動態的加載其它請求。

    • <jsp:include page="/header.jsp" />
    • <jsp:include page="/servlet/header" />
    • <jsp:include page="/header.do" />

    而如果你不是使用JSP,而是使用模板引擎如Freemarker,Velocity。有該功能也將十分方便。

    Freemarker提供了<@include_page path="/servlet/header"/>指令,使freemarker可以完成jsp:include功能,但velocity則沒有提供該功能。

     

    二.擴展

    現擴展實現一個比Freemarker更加通用的HttpInclude對象,可以適用于Freemarker及Velocity。

    Freemarker及Velocity示例使用:

    • ${httpInclude.include("/servlet/head?p1=v1&p2=v2")};
    • ${httpInclude.include("/head.jsp")};
    • ${httpInclude.include("http://www.google.com")};

    與jsp:include相比:

    1. 與jsp:include完成相同的功能
    2. 可以include遠程的http內容.并且會將session_id等cookie傳遞至該請求,如: http://www.google.com

    三.使用

    以springmvc為例,筆者編寫了一個攔截器.用于攔截所有的controller方法.( struts2可以編寫類似攔截器)

     

    import freemarker.ext.servlet.IncludePage;
    import cn.org.rapid_framework.web.httpinclude.HttpInclude;

    public class ShareRenderArgsVariableInterceptor extends HandlerInterceptorAdapter {
        
    static Log log = LogFactory.getLog(ShareRenderArgsVariableInterceptor.class);
        
        @Override
        
    public void postHandle(HttpServletRequest request,
                HttpServletResponse response, Object handler,
                ModelAndView modelAndView) 
    throws Exception {
            String viewName 
    = modelAndView.getViewName();
            
    if(viewName != null && !viewName.startsWith("redirect:")) {
                
    //筆者擴展的httpInclude
                modelAndView.addObject("httpInclude"new HttpInclude(request, response));
                
                
    //freemarker 原生的IncludePage指令
                modelAndView.addObject("include_page"new IncludePage(request, response));
            }
        }

    }

     

    然后在freemarker或者是velocity中,就可使用: ${httpInclude.include("/head.jsp")};

     

    點擊此處,查看HttpInclude源碼

     

    posted on 2010-06-13 19:41 badqiu 閱讀(3343) 評論(3)  編輯  收藏

    評論

    # re: 為velocity,freemarker提供jsp:include功能  回復  更多評論   

    2010-06-13 19:56 | 53中文網

    # re: 為velocity,freemarker提供jsp:include功能  回復  更多評論   

    不錯 值得借鑒~
    2010-06-13 21:11 | 18傲骨中文

    # re: 為velocity,freemarker提供jsp:include功能[未登錄]  回復  更多評論   

    這個技巧不錯!!!!!
    2010-06-13 22:17 | alan

    只有注冊用戶登錄后才能發表評論。


    網站導航:
     
    主站蜘蛛池模板: 亚洲同性男gay网站在线观看| 免费在线不卡视频| 亚洲理论片在线中文字幕| 中文字幕无码毛片免费看| 国产亚洲一区二区三区在线观看 | 中文字幕亚洲综合小综合在线| 巨波霸乳在线永久免费视频| 亚洲视频免费在线观看| 91香蕉国产线观看免费全集| 亚洲欧洲自拍拍偷综合| 97在线线免费观看视频在线观看| 亚洲AV综合色区无码二区爱AV| 免费毛片在线看片免费丝瓜视频| 亚洲国产午夜精品理论片在线播放 | 亚洲AV色无码乱码在线观看| 日本特黄特黄刺激大片免费| 特黄aa级毛片免费视频播放| 浮力影院亚洲国产第一页| 久久国产乱子伦精品免费强| 久久精品国产亚洲精品2020| 日韩亚洲国产高清免费视频| 国产青草亚洲香蕉精品久久| 亚洲线精品一区二区三区 | 热99RE久久精品这里都是精品免费| 亚洲av午夜福利精品一区| 啦啦啦完整版免费视频在线观看 | 亚洲伊人久久大香线蕉在观| 在线观看人成视频免费| av电影在线免费看| 亚洲美女色在线欧洲美女| 午夜成人免费视频| 国产中文字幕在线免费观看| 亚洲国产成人久久99精品| 国产成人免费ā片在线观看| 中文字幕无码免费久久9一区9| 亚洲成人黄色在线| 国产成人毛片亚洲精品| 国产成人精品免费视频动漫 | 少妇无码一区二区三区免费| 亚洲人成无码网站在线观看| 亚洲人成伊人成综合网久久久|