Hallo,
hier die kurze Frage:
Wie komme ich denn an den Byte-Strom, der vom Browser oder einem anderen Programm an meinen Servlet übertragen wird? Ich will den einfach selber auslesen und sehen was im Original drin steht. Der InputStream ist scheinbar leer.
Hier die längere Frage:
nachdem ich jetzt einen funktionstüchtigen HttpServlet geschrieben und am Laufen habe, will mein Chef dass der Servlet neben der ganzen Http-Geschichte auch noch ein paar andere Sachen macht. Das würde ich gerne machen indem ich bei den Servlets quasi eine Ebene höher gehe und meine eigene Servlet-Klasse nicht von HttpServlet ableite sondern direkt einen Servlet schreibe, der das Interface Servlet implementiert.
Ich habe nun also versucht die service(ServletRequest,ServletResponse)-Methode zu implementieren. Die Ausgabe funktioniert, es kommt Text beim Browser an wenn ich den Servlet abrufe. Nur mit den empfangenen Daten hab ich Probleme. Der BufferedReader von ServletRequest.getReader() liest leider nix, der InputStream scheint leer zu sein. Bis auf ein paar Attribute (die tatsächlich ein bisschen Text enthalten) ist da nix zu holen: die Parameter sind leer, der InputStream auch usw...
Das Teil sollte weiter unter Tomcat laufen. Ist es also möglich an den Byte-Strom ran zu kommen? Ich würde dann selber die Methoden doGet() und doPost() usw. aufrufen. Was muss ich dann noch beachten?
hier die kurze Frage:
Wie komme ich denn an den Byte-Strom, der vom Browser oder einem anderen Programm an meinen Servlet übertragen wird? Ich will den einfach selber auslesen und sehen was im Original drin steht. Der InputStream ist scheinbar leer.
Hier die längere Frage:
nachdem ich jetzt einen funktionstüchtigen HttpServlet geschrieben und am Laufen habe, will mein Chef dass der Servlet neben der ganzen Http-Geschichte auch noch ein paar andere Sachen macht. Das würde ich gerne machen indem ich bei den Servlets quasi eine Ebene höher gehe und meine eigene Servlet-Klasse nicht von HttpServlet ableite sondern direkt einen Servlet schreibe, der das Interface Servlet implementiert.
Ich habe nun also versucht die service(ServletRequest,ServletResponse)-Methode zu implementieren. Die Ausgabe funktioniert, es kommt Text beim Browser an wenn ich den Servlet abrufe. Nur mit den empfangenen Daten hab ich Probleme. Der BufferedReader von ServletRequest.getReader() liest leider nix, der InputStream scheint leer zu sein. Bis auf ein paar Attribute (die tatsächlich ein bisschen Text enthalten) ist da nix zu holen: die Parameter sind leer, der InputStream auch usw...
Das Teil sollte weiter unter Tomcat laufen. Ist es also möglich an den Byte-Strom ran zu kommen? Ich würde dann selber die Methoden doGet() und doPost() usw. aufrufen. Was muss ich dann noch beachten?
Code:
import java.io.BufferedReader;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.Servlet;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
public class PortalServlet implements Servlet
{
public void destroy()
{
}
public ServletConfig getServletConfig()
{
return null;
}
public String getServletInfo()
{
return null;
}
public void init(ServletConfig arg0) throws ServletException
{
}
public void service(ServletRequest arg0, ServletResponse arg1) throws ServletException, IOException
{
BufferedReader in = arg0.getReader();
in.reset();
System.out.println("from service");
PrintWriter out = arg1.getWriter();
out.println("Hello. Roses are red.");
out.println("Violets are blue.");
/*
Obige Ausgabe kommt am aufrufenden Browser an,
Unten versuche ich die übermittelten Daten einzulesen und ebenfalls auszugeben, aber es
bleibt bei der Ausgabe, die oben erzeugt wird
*/
char[] c = new char[100];
in.read(c);
String s = new String(c);
out.println(s);
}
}
Zuletzt bearbeitet: