|
servlet Filter problem
i've made a program with servlet Filter
and the programme have to put in every html page banner but the programme can't run
i've mett class cast exception can someone help me
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
import java.util.*;
public class AdvertismentFilter implements Filter {
private FilterConfig filterConfig;
public void init(FilterConfig filter) throws ServletException{}
// //Handle the passed-in FilterConfig
// public void init(FilterConfig filterConfig) throws ServletException {
// this.filterConfig = filterConfig;
// }
//Process the request/response pair
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException{
PrintWriter out = response.getWriter();
// HttpServletResponse httpRes = (HttpServletResponse)response;
// MemoryResponseWrapper resWrapper = new MemoryResponseWrapper(httpRes);
//
// chain.doFilter(request,resWrapper);
HttpServletResponse httpResponse = (HttpServletResponse) response;
MemoryResponseWrapper responseWrapper = new MemoryResponseWrapper(httpResponse);
chain.doFilter(request, response);
String contentType = request.getContentType();
String originalRes = responseWrapper.toString();
if((contentType != null)&&(contentType.toLowerCase().startsWith("text/html"))){
String newResponse = addAdvertisment(originalRes);
out.println(newResponse);
}else{ out.println(originalRes);}
out.close();
}
public String addAdvertisment(String aHtml){
int endOfBodyIndex = aHtml.toLowerCase().indexOf("</body>");
String htmlBefore;
String htmlAfter;
if(endOfBodyIndex!=-1){
htmlBefore = aHtml.substring(0,endOfBodyIndex-1);
htmlAfter = aHtml.substring(endOfBodyIndex);
}else{
htmlBefore = aHtml;
htmlAfter = "";
}
String result = htmlBefore + "\n\n<br><p align='center'>" +"<a href='http://www.devbg.org'><img border='0' "
+"src='http://www.devbg.org/ads/basd-logo.png'>" +"</a></p>\n\n"+htmlAfter;
return result;
}
//Clean up resources
public void destroy() {
}
}
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class MemoryResponseWrapper extends HttpServletResponseWrapper{
private CharArrayWriter output;
public MemoryResponseWrapper(HttpServletResponse aResponse){
super(aResponse);
output = new CharArrayWriter();
}
public String toString(){
String result = output.toString();
return result;
}
public PrintWriter getPrintWriter(){
PrintWriter printW = new PrintWriter(output);
return printW;
}
}
|