涓昏鏄戶鎵縃ttpServletResponseWrapper鍐?涓被(PageResponseWrapper),浠g爜錛?br />
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 * 鑾峰彇鍘熷鐨剅esponse
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 }
榪囨護鍣ㄧ殑浠g爜:
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浠g爜
8 String tmpHtml = prw.getContent();
9 // 鏈緇堣緭鍑虹殑html浠g爜
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 // 杈撳嚭(娉ㄦ剰錛岃繖閲屽彧鑳戒嬌鐢╤Response錛屼笉鑳戒嬌鐢╬rwgetWriter())
20 PrintWriter writer = hResponse.getWriter();
21 writer.write(retHtml);
22 writer.close();
23 writer.close();
24 writer.flush();
25 }

]]>