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

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

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

    posts - 36, comments - 419, trackbacks - 0, articles - 0
      BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

    過濾器中向所有JSP頁面插入html代碼

    Posted on 2009-03-12 14:48 BearRui(AK-47) 閱讀(2903) 評論(4)  編輯  收藏 所屬分類: Java
    為公司內部開發了1個簡單的MVC框架,框架中需要向所有JSP頁面的<head>中插入2條引用JS的代碼,實現如下:

    主要是繼承HttpServletResponseWrapper寫1個類(PageResponseWrapper),代碼:
     1 public class PageResponseWrapper extends HttpServletResponseWrapper {
     2     private Buffer buffer;
     3     private HttpServletResponse originalResponse;
     4 
     5     public PageResponseWrapper(final HttpServletResponse response){
     6         super(response);
     7         this.originalResponse = response;
     8         buffer = new Buffer();
     9     }
    10 
    11     @Override
    12     public PrintWriter getWriter() throws IOException {
    13         return buffer.getWriter();
    14     }
    15 
    16     public CharArrayWriter getContent(){
    17         return buffer.getBufferedWriter();
    18     }
    19 
    20     public void close() throws IOException {
    21         buffer.getWriter().close();
    22     }
    23     
    24     public void finalize() throws Throwable {
    25        super.finalize();
    26        buffer.getWriter().close();
    27     }
    28 
    29     /**
    30      * 獲取原始的response
    31      * @return the originalResponse
    32      */
    33     public HttpServletResponse getOriginalResponse() {
    34         return originalResponse;
    35     }
    36 }

    Buffer類:
     1 public class Buffer {
     2 
     3     private CharArrayWriter bufferedWriter;
     4     private PrintWriter exposedWriter;
     5     
     6     public char[] getContents() throws IOException {
     7         //bufferedWriter 表示請求的頁面的html
     8         if (getBufferedWriter() != null) {
     9             return getBufferedWriter().toCharArray();
    10         }
    11         return null;
    12     }
            public PrintWriter getWriter() {
    16         if (getBufferedWriter() == null) {
    17             bufferedWriter = new CharArrayWriter();
    18             exposedWriter = new PrintWriter(getBufferedWriter());
    19         }
    20         return exposedWriter;
    21     }
    22     /**
    23      * @return the bufferedWriter
    24      */
    25     public CharArrayWriter getBufferedWriter() {
    26         return bufferedWriter;
    27     }
    28 }

    過濾器的代碼:
     1 public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
     2     HttpServletRequest hRequest = (HttpServletRequest)request;
     3     HttpServletResponse hResponse = (HttpServletResponse)response;
     4     PageResponseWrapper prw = new PageResponseWrapper(hResponse);
     5  
     6     chain.doFilter(request, prw);
     7     // 得到視圖html代碼
     8     String tmpHtml = prw.getContent();
     9     // 最終輸出的html代碼
    10     String retHtml = "";
    11     // 查找<head>
    12     int index = tmpHtml.toLowerCase().indexOf("<head>");
    13     if(index != -1){
    14         index +=6;
    15         retHtml = tmp.substring(0, index) + "<script src='http://./..js'></script>" + tmp.substring(index);
    16     }else{
    17         retHtml = tmpHtml;
    18     }
    19     // 輸出(注意,這里只能使用hResponse,不能使用prwgetWriter())
    20     PrintWriter writer = hResponse.getWriter();
    21     writer.write(retHtml);
    22     writer.close();   
    23     writer.close();
    24     writer.flush();     
    25 }





    [作者]:BearRui(AK-47)
    [博客]: http://www.tkk7.com/bearrui/
    [聲明]:本博所有文章版權歸作者所有(除特殊說明以外),轉載請注明出處.
    英雄,別走啊,幫哥評論下:  

    精彩推薦 好文要頂 水平一般 看不懂 還需努力

    評論

    # re: 過濾器中向所有JSP頁面插入html代碼[未登錄]  回復  更多評論   

    2009-03-16 14:38 by abc
    用sitemesh 很輕松就做到了

    # re: 過濾器中向所有JSP頁面插入html代碼  回復  更多評論   

    2009-03-16 15:47 by BearRui(AK-47)
    @abc
    sitemesh 是可以,sitemesh也是這樣實現的

    # re: 過濾器中向所有JSP頁面插入html代碼  回復  更多評論   

    2010-06-09 13:57 by BearRui(AK-47)
    文章很精彩,推薦一下!

    # re: 過濾器中向所有JSP頁面插入html代碼  回復  更多評論   

    2010-06-09 14:00 by BearRui(AK-47)
    好文章,頂一下!
    主站蜘蛛池模板: 亚洲精品视频久久| 亚洲精品国产精品乱码不99| 亚洲美免无码中文字幕在线| 久久久精品午夜免费不卡| 亚洲婷婷五月综合狠狠爱| av网站免费线看| 亚洲永久无码3D动漫一区| 美女被免费网站91色| 日本亚洲成高清一区二区三区| 一级毛片在播放免费| 亚洲色婷婷六月亚洲婷婷6月 | 亚洲Av熟妇高潮30p| 四虎影视在线影院在线观看免费视频 | 久久精品国产亚洲7777| 丁香花在线观看免费观看图片| 亚洲人色婷婷成人网站在线观看| 91视频免费观看| 亚洲视频在线一区二区三区| 久久久久久免费视频| 美国毛片亚洲社区在线观看 | 免费无遮挡无码视频在线观看| 亚洲视频人成在线播放| 三年片在线观看免费西瓜视频| 亚洲日本中文字幕区| 啦啦啦www免费视频| 一级毛片免费不卡| 久久精品国产亚洲AV无码娇色 | 亚洲Av永久无码精品三区在线| 免费在线视频你懂的| 国产亚洲精品美女久久久久久下载| 亚洲综合熟女久久久30p| 亚洲成年人免费网站| 美国免费高清一级毛片| 国产亚洲综合色就色| 日本精品人妻无码免费大全| 一二三四在线观看免费中文在线观看 | 亚洲人成网站免费播放| 国产精品亚洲二区在线观看 | 羞羞视频在线观看免费| 亚洲高清美女一区二区三区| 日本免费福利视频|