又為了讓同事能不用變更之前放在jsp裡面的script path,
所以想到了可以透過filter來將jsp輸出前把script path加上SVN的版號,
這樣就可以模擬出使用者每次都能讀到最新變更的Javascript
以下是簡單置換內容的Filter Sample
import java.io.CharArrayWriter; import java.io.PrintWriter; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponseWrapper; public class ResponseWrapper extends HttpServletResponseWrapper { private PrintWriter cachedWriter; private CharArrayWriter bufferedWriter; public ResponseWrapper(HttpServletResponse response) { super(response); this.bufferedWriter = new CharArrayWriter(); this.cachedWriter = new PrintWriter(this.bufferedWriter); } @Override public PrintWriter getWriter() { return this.cachedWriter; } public String getResponseHtml() { return this.bufferedWriter.toString(); } }
透過Filter結合HttpServletResponseWrapper
@Override public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { ResponseWrapper respWrapper = new ResponseWrapper((HttpServletResponse) response); HttpServletResponse hsrespWrapper = respWrapper; chain.doFilter(request, hsrespWrapper); // get html content(依你的需求取代這個content的內容即可) String currentJSPCotent = respWrapper.getResponseHtml() // final output content PrintWriter out = response.getWriter(); out.write(currentJSPCotent); out.flush(); out.close(); }
沒有留言:
張貼留言
留個話吧:)