ERLEDIGT
NEIN
NEIN
ANTWORTEN
0
0
ZUGRIFFE
442
442
EMPFEHLEN
-
Hallo.
Ich möchte gerne eine Datei zu einem Servlet mittels Formular method="POST" und action="TestServlet" hochladen. Diese Datei soll dann in doPost(...) validiert werden, was einige Zeit in Anspruch nehmen kann.
Deshalb dachte ich daran, dass VOR der tatsächlichen Übermittlung an das Servlet ein JavaScript ausgeführt wird, dass ein XmlHttpRequest Objekt erzeugt, dass mit open("GET", "TestServlet", true) immer wieder den Status abfragt und (statt eines Progressbars) die bislang ermittelten Fehler in der JSP anzeigt. URL für POST und GET sind jeweils das selbe Servlet.
Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> <script type="text/javascript"> //<!-- var xhrInterval = false; var xhrTimeout = false; function submitForm() { var xhr = false; try { xhr = new ActiveXObject('Msxml2.XMLHTTP'); } catch (e) { try { xhr = new ActiveXObject('Microsoft.XMLHTTP'); } catch (e2) { try { xhr = new XMLHttpRequest(); } catch (e3) { xhr = false; } } } xhr.onreadystatechange = function() { if (xhr.readyState == 4) { if (xhr.status == 200) { alert("Fertig!"); var errs = xhr.responseXml.getElementsByTagName("ERRORS")[0]; document.ajax.dyn.value = "Received:" + errs; } else { document.ajax.dyn = "Error code " + xhr.status; } clearInterval(xhrInterval); //clearTimeout(xhrTimeout); } }; xhr.open("GET", "TestServlet", true); xhr.send("null"); } function go() { submitForm(); xhrInterval = setInterval("submitForm();", 1000); } //--> </script> <title>Insert title here</title> </head> <body> <form method="post" name="ajax" action="TestServlet"> <INPUT type="button" value="Click" onclick="go();" /> <!-- <INPUT type="button" value="Click" onclick="submitForm(); return false;" /> --> <INPUT type="text" name="dyn" value="" /> <INPUT type="submit" value="Submit" onclick="submitForm(); return true;" /> </form> </body> </html>
Hier noch das minimalistische Servlet, das zunächst nur auf der Konsole ausgeben soll, welche der Methoden doPost(...) oder doGet(...) aufgerufen wurde:
Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52
public class TestServlet extends HttpServlet { private static final long serialVersionUID = 1L; /** * @see HttpServlet#HttpServlet() */ public TestServlet() { super(); // TODO Auto-generated constructor stub } /** * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response) */ protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { System.out.println("Say Hello GET."); String sent = request.getParameter("sent"); System.out.println(sent); // PrintWriter out = response.getWriter(); // response.setContentType("text/xml"); // HttpSession session = request.getSession(); // Integer errCount = (Integer)session.getAttribute("ERRORS"); // errCount = new Integer(5); // session.setAttribute("ERRORS", new Integer(-1)); // StringBuffer buffy = new StringBuffer("<?xml version=\"1.0\" encoding=\"ISO-8859-1\"?>\n"); // buffy.append("<response>"); // buffy.append("<errors>"); // buffy.append(errCount); // buffy.append("</errors>"); // buffy.append("</response>\n"); // if(out != null) { // out.println(buffy.toString()); // out.flush(); // out.close(); // } } /** * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response) */ protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { System.out.println("Say Hello POST."); String sent = request.getParameter("sent"); System.out.println(sent); HttpSession session = request.getSession(); int errs = 123; session.removeAttribute("ERRORS"); session.setAttribute("ERRORS", new Integer(errs)); System.out.println(session.getAttribute("ERRORS") + " Fehler in Session gespeichert. Attributname: ERRORS"); } }
TestServlet.doPost(...) wird aufgerufen, TestServlet.doGet(...) aber leider nicht. Jedenfalls erfolgen die Konsolenausgaben nicht. Weshalb nicht?
Vielen Dank.Geändert von du-it (23.03.11 um 13:20 Uhr)
Ähnliche Themen
-
selectoptionen per POST übermitteln funktioniert nicht
Von Pastor0345 im Forum PHPAntworten: 4Letzter Beitrag: 06.07.06, 12:08 -
Automatisch Daten über POST übermitteln
Von Kane_Kowalski im Forum PHPAntworten: 1Letzter Beitrag: 13.12.05, 15:06 -
form enctype='multipart/form-data' und form action=index2.php method='post'
Von Binio im Forum PHPAntworten: 4Letzter Beitrag: 06.08.05, 05:24 -
Parameter in der URL als POST ohne Form-Tag
Von ExtremeSnail im Forum PHPAntworten: 7Letzter Beitrag: 12.01.05, 13:00 -
form method post und get
Von Flo[H] im Forum PHPAntworten: 1Letzter Beitrag: 27.11.02, 18:00





Zitieren
Login





