办法如下:
建立两个文件CharArrayWriter.java ReplaceFilter.java
CharArrayWrapper.java
=============================================================
package vent.filter;import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;public class CharArrayWrapper
extends HttpServletResponseWrapper {
private CharArrayWriter charWriter; public CharArrayWrapper(HttpServletResponse response) {
super(response);
charWriter = new CharArrayWriter();
} public PrintWriter getWriter() {
return(new PrintWriter(charWriter));
} public String toString() {
return(charWriter.toString());
} public char[] toCharArray() {
return(charWriter.toCharArray());
}
}
--------------------------------------------------
ReplaceFilter.java
--------------------------------------------------
package vent.filter;import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
import java.util.*;public class ReplaceFilter implements Filter {
private FilterConfig config; public void doFilter(ServletRequest request,
ServletResponse response,
FilterChain chain)
throws ServletException, IOException {
CharArrayWrapper responseWrapper =
new CharArrayWrapper((HttpServletResponse)response);
chain.doFilter(request,responseWrapper); String responseString = responseWrapper.toString();
//--------------
System.out.println(responseString);
//这里responseString就是response响应的正文内容.(即网页的源代码)
//对responseString处理的代码.
//-------------- updateHeaders(response, responseString); PrintWriter out = response.getWriter();
out.write(responseString);
} public void init(FilterConfig config)
throws ServletException {
this.config = config;
} protected FilterConfig getFilterConfig() {
return(config);
} public void destroy() {} public void updateHeaders(ServletResponse response,
String responseString) {
response.setContentLength(responseString.length());
}
}然后就可以输出responseString的内容,得到的是网页的源代码.
建立两个文件CharArrayWriter.java ReplaceFilter.java
CharArrayWrapper.java
=============================================================
package vent.filter;import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;public class CharArrayWrapper
extends HttpServletResponseWrapper {
private CharArrayWriter charWriter; public CharArrayWrapper(HttpServletResponse response) {
super(response);
charWriter = new CharArrayWriter();
} public PrintWriter getWriter() {
return(new PrintWriter(charWriter));
} public String toString() {
return(charWriter.toString());
} public char[] toCharArray() {
return(charWriter.toCharArray());
}
}
--------------------------------------------------
ReplaceFilter.java
--------------------------------------------------
package vent.filter;import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
import java.util.*;public class ReplaceFilter implements Filter {
private FilterConfig config; public void doFilter(ServletRequest request,
ServletResponse response,
FilterChain chain)
throws ServletException, IOException {
CharArrayWrapper responseWrapper =
new CharArrayWrapper((HttpServletResponse)response);
chain.doFilter(request,responseWrapper); String responseString = responseWrapper.toString();
//--------------
System.out.println(responseString);
//这里responseString就是response响应的正文内容.(即网页的源代码)
//对responseString处理的代码.
//-------------- updateHeaders(response, responseString); PrintWriter out = response.getWriter();
out.write(responseString);
} public void init(FilterConfig config)
throws ServletException {
this.config = config;
} protected FilterConfig getFilterConfig() {
return(config);
} public void destroy() {} public void updateHeaders(ServletResponse response,
String responseString) {
response.setContentLength(responseString.length());
}
}然后就可以输出responseString的内容,得到的是网页的源代码.
而且这个filter在Tomcat中可以运作,但是转移到Resin下就不行了.请教高手