Frage

Für einen Kunden, ich brauche ein Servlet zu schreiben, die Werte in einer Form Post drucken. Das Formular wird auf einem anderen Server gehostet und sieht etwas wie folgt aus:

<form action="http://myserver/myServlet" method="POST">
<input type="text" id="someName" value="someInterestingValue"/>
<input type="submit" value="submit" />
</form>

Ich habe einen Tomcat 5.0.28-Server zur Verfügung, auf einem Java JDK 1.4 ausgeführt wird, so dass ich ein einfaches Servlet:

public class ProxyServlet extends HttpServlet {
    public void doPost(HttpServletRequest req, 
                       HttpServletResponse res) 
                       throws ServletException, IOException {
        PrintWriter out = res.getWriter();      
        Enumeration a =req.getAttributeNames(); 
        while (a.hasMoreElements()){
            String attrname = (String) a.nextElement();
            out.println(attrname+"="+req.getAttribute(attrname)+"<br/>");
        }
        out.close();
    }
}

Wenn ich an das Servlet durch URL alles gehen sieht, wie erwartet. Wenn ich eine GET-Anforderung mit einigen Parametern zu senden, kann ich die als Attribute in dem Debugger in der doGet () -Methode (Methode wurde weggelassen für brevety) sehen.

Doch in der doPost (), scheinen meine Formularfelder zu fehlen. Ich habe in den Tomcat-Log-Dateien angesehen und nichts Besonderes protokolliert. Ich habe versucht, eine crossdomain.xml auf einige Verzeichnisse hinzufügen, aber nicht einen Weg zu ändern, um dieses Verhalten zu finden.

So klar zu sein: Das Formular, wie oben aufgeführt ist auf Server A. Mein Servlet auf einem vorhandenen Legacy läuft Tomcat / Java-Applikation auf dem Server gehostet B. Wenn die Form des Typs „POST“ keines der Felder ist kommt in der Servlets auf Server B. Apache ist nicht "vor" von Tomcat.

Gibt es eine Konfiguration, die ich bin fehlt in Tomcat Einstellung? Irgendwelche Tipps oder Anregungen, wo neben aussehen? Hilfe wird sehr geschätzt.

War es hilfreich?

Lösung 3

das Problem gefunden. Nach einem ganzen Tag des Suchens und Codierung, es läuft alles auf die Tatsache, dass mein Code in Ordnung arbeitet. Das Problem ist in der Form. die Zeile:

<input type="text" id="someName" value="someInterestingValue"/>

Soll heißen:

<input type="text" name="someName" value="someInterestingValue"/>

Für Menschen „getParameter“ statt „getAttribute“ zu erwähnen sind Sie völlig richtig. In meinem Test-Code hatte ich beide nur um sicher zu sein (weil ich dachte, dass ich es verloren ...), aber beide waren nicht Ergebnisse der Rückkehr, wie der Browser war einfach nicht die Name / Wert-Paare zu senden.

Ich denke, dieses Posting auf Stackoverflow hat geholfen, weil ich zu erklären hatte und las mein Problem, das ich dachte, die „id =“ sah komisch aus. Codierung Fehler in Textstücken finden Sie mit Blick auf ...

Andere Tipps

Anfrage Attribute? Sie nicht brauchen, um sie als Anforderungsparameter für den Zugriff mit HttpServletRequest#getParameter() und so weiter?

Welche mehr Verwirrung fügt hinzu, dass Sie gesagt, dass es in der doGet() funktioniert. Wie sieht ihr Code wie dann aussehen? Ist es Zugriff auf sie auch als Attribut? Das wäre in einem normalen JSP / Servlet-Umgebung (das heißt Sie einige Filter nicht verwenden, die kopiert die Parameter Attribute oder so) nicht möglich gewesen.

Das hat nichts mit Cross-Site zu tun. Wie BalusC sagte verwenden getParameter ... statt getAttribute ... Methoden

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top