du hast recht. war eigentlich müll
Aber nach langem google habe ich eine lösung gefunden. Ich habe meinen eigenen Response Wrapper und OutputStream geschrieben. Eigentlich sollte es funktionieren aber ich kriege noch immer eine leere Seite. Das Einzige was er mir dann anzeigt ist PRE und POST. Vllt findet jmd den fehler
Hier der Filter:
Der Response Wrapper
Und der eigene OutputStream
web.xml
Ich hoffe, jmd findet meinen dummen fehler!
gruß
Thorsten
Aber nach langem google habe ich eine lösung gefunden. Ich habe meinen eigenen Response Wrapper und OutputStream geschrieben. Eigentlich sollte es funktionieren aber ich kriege noch immer eine leere Seite. Das Einzige was er mir dann anzeigt ist PRE und POST. Vllt findet jmd den fehler
Hier der Filter:
Code:
publicvoid doFilter(ServletRequest request, ServletResponse response,
FilterChain filter) throws IOException, ServletException {
OutputStream out = response.getOutputStream();
out.write(new String("<H1>PRE</H1>").getBytes());
SAPFilterResponse wrapper = new SAPFilterResponse((HttpServletResponse) response);
filter.doFilter(request, wrapper);
// wrapper.getData() erwidert nichts. Praktisch leer, warum?
out.write(wrapper.getData());
out.write(new String("<H1>POST</H1>").getBytes());
out.close();
}
Der Response Wrapper
Code:
package testSuite;
import java.io.ByteArrayOutputStream;
import java.io.PrintWriter;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpServletResponseWrapper;
publicclass SAPFilterResponse extends HttpServletResponseWrapper {
private ByteArrayOutputStream output;
privateintcontentLength;
private String contentType;
public SAPFilterResponse(HttpServletResponse response) {
super(response);
this.output = new ByteArrayOutputStream();
}
public ServletOutputStream getOutputStream() {
returnnew SAPFilterOutputStream(this.output);
}
publicbyte[] getData() {
returnthis.output.toByteArray();
}
public PrintWriter getWriter() {
returnnew PrintWriter(this.getOutputStream(), true);
}
publicvoid setContentType(String s) {
this.contentType = s;
super.setContentType(s);
}
public String getContentType() {
returnthis.contentType;
}
publicvoid setContentLength(int length) {
this.contentLength = length;
super.setContentLength(length);
}
publicint getContentLength() {
returnthis.contentLength;
}
}
Und der eigene OutputStream
Code:
package testSuite;
import java.io.DataOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import javax.servlet.ServletOutputStream;
publicclass SAPFilterOutputStream extends ServletOutputStream {
private DataOutputStream stream;
public SAPFilterOutputStream(OutputStream output) {
this.stream = new DataOutputStream(output);
}
publicvoid write(int b) throws IOException {
this.stream.write(b);
}
publicvoid write(byte[] b) throws IOException {
this.stream.write(b);
}
publicvoid write(byte[] b, int off, int len) throws IOException {
this.stream.write(b, off, len);
}
}
web.xml
Code:
<filter>
<filter-name>SAPFilter</filter-name>
<filter-class>testSuite.SAPFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>SAPFilter</filter-name>
<url-pattern>*.jsp</url-pattern>
</filter-mapping>
Ich hoffe, jmd findet meinen dummen fehler!
gruß
Thorsten