<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 :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理

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

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

    主要是繼承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://m.tkk7.com/bearrui/
    [聲明]:本博所有文章版權(quán)歸作者所有(除特殊說明以外),轉(zhuǎn)載請注明出處.
    英雄,別走啊,幫哥評論下:  

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

    評論

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

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

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

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

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

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

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

    2010-06-09 14:00 by BearRui(AK-47)
    好文章,頂一下!
    主站蜘蛛池模板: 七色永久性tv网站免费看| 小说区亚洲自拍另类| 久久久久免费看黄a级试看| 亚洲日韩精品无码专区网址| jizz18免费视频| 亚洲av无码天堂一区二区三区| 在线观看亚洲电影| 亚洲AV无码乱码精品国产| 成人免费夜片在线观看| 国产亚洲精品拍拍拍拍拍| 可以免费观看的毛片| 亚洲成熟xxxxx电影| 免费人成网站在线观看10分钟| 亚洲 欧洲 日韩 综合在线| 最近2019中文字幕免费看最新| 亚洲国产欧洲综合997久久| 免费国产a国产片高清网站| 精品国产污污免费网站入口 | 日韩毛片无码永久免费看| 亚洲人成网国产最新在线| 国产一级特黄高清免费大片| 亚州**色毛片免费观看| 亚洲国产精彩中文乱码AV| 91成年人免费视频| 亚洲精品V天堂中文字幕| 亚洲免费无码在线| 1000部免费啪啪十八未年禁止观看| 精品亚洲成在人线AV无码| 日韩中文无码有码免费视频 | 四虎精品成人免费视频| 亚洲国产精品无码久久久蜜芽| 在线a免费观看最新网站| 亚洲综合精品第一页| 国产亚洲精品线观看动态图| 亚洲免费视频网站| 精品亚洲国产成人av| 国产亚洲高清不卡在线观看| 亚洲一区二区三区免费视频| 国产午夜亚洲精品不卡| 香蕉蕉亚亚洲aav综合| 国产精品无码免费视频二三区 |