BCCameron: HTML Seite Button mit JavaMethoden belgen

Hallo,

ich hab da mal ne Frage:

Ich habe in Java einen Rechner geschrieben und in HTML eine Oberfläche dazu. Das ganze soll als Servlet laufen und der Rechner soll Eingabe a und Eingabe b aufnehmen und auf drücken einer der Tasten + - * /    a und b an die jeweilige  Methode (addieren, subtrahieren usw) geben. Ich weiß nur nicht, wie ich die Button mit dieser Funktion belegen kann.
Kann mir jemand ein Beispiel an Hand der addition geben?
Hier mal mein code bis zum addieren Button ;)

public void doGet(HttpServletRequest request, HttpServletResponse response)
 throws ServletException, IOException {

response.setContentType("text/html");
  PrintWriter out = response.getWriter();
   out.println("<html>");
   out.println("<head>");

String title = "Binärrechner";

out.println("<title>"+ title +"</title>");
   out.println("</head>");
   out.println("<body>");
   out.println("<form action='RechnerUI' method='post'>");
   out.println("<h1><b>" + title + "</b></h1>");
   out.println("<br>");
   out.println("<u>Dieser Rechner rechnet nur mit binär dargestellten Zahlen.</u>");
   out.println("<br>");
   out.println("<table border='10' cellpadding='5' bgcolor='DFDF7B'>");
   out.println(" <tr>");
   out.println(" <td align='right'>Eingabe a:<HR></td>");
   out.println("<td><input name='Eingabe a' type='text' size='20' maxlength='40'></td>");
   out.println("  <td> <input type='submit' value=' +  '>");
   out.println("     </tr>");

in der Post Methode hab ich dann u.a.:

public void doPost(HttpServletRequest request, HttpServletResponse response)
   throws ServletException, IOException {

String a = request.getParameter("Eingabe a");
  String b = request.getParameter("Eingabe b");

String c = rechnen(a,b);

und dann doGet wieder eingefügt.

Und in der Methode Rechnen sollte dann die jeweilige operation ausgeführt werden. Oder geht das auch einfacher?

Bin für jede Hilfe dankbar.

LG

BCCameron

  1. Hej,

    Ich weiß nur nicht, wie ich die Button mit dieser Funktion belegen kann.

    Ich weiß nicht ob ich dich recht verstanden habe, aber ggf. möchtest du mehrere submit-Button mit verschiedenen name-Attributen (plus, minus, geteilt, mal) versehen?

    out.println("<td><input name='Eingabe a' type='text' size='20'

    Dein html ist wahrscheinlich nicht valide, zudem dürfen die name-Attribute keine Leerzeichen enthalten.

    Beste Grüße
    Biesterfeld

    --
    Art.1: Et es wie et es
    Art.2: Et kütt wie et kütt
    Art.3: Et hätt noch immer jot jejange
    Das Kölsche Grundgesetz
    1. Ich weiß nicht ob ich dich recht verstanden habe, aber ggf. möchtest du mehrere submit-Button mit verschiedenen name-Attributen (plus, minus, geteilt, mal) versehen?

      Genau so ist es...

      Dein html ist wahrscheinlich nicht valide, zudem dürfen die name-Attribute keine Leerzeichen enthalten.

      Hm, ok, aber das ist ja nicht das Problem. Das funktioniert ja noch wunderbar. Sind ja nur Textfelder, in die ich meine Operanden schreibe. Die kann ich auch später dann wieder als String a und b auslesen. Das problem liegt eigentlich nur in den Operatoren. Ich möchte da eigentlich mehrere Submit Button erstellen, die dann je nach dem welcher gedrückt wurde, eine andere Methode aufrufen.
      Die Methoden stehen in der Klasse Rechner, während die Button aus der Klasse RechnerUI generiert werden.

      Ich habe das bisher so gemacht, dass ich den Operator einfach als Eingabeparameter in einem weiteren Textfeld übergeben und dann mit einer einfachen if/else Abfrage gucke welcher Operator eingegeben wurde und welche Methode nun benutzt werden muss.

      Ich habe gamcht:

      String operator = request.getParameter("Operator");

      und dann:

      if(operator.equals("+"))
          c = Rechner.addieren(a,b);
        else if(operator.equals("-"))
          c = Rechner.subtrahieren(a,b);
      usw...

      Das funktioniert aber ja nicht mit button, denn wenn ich den parameter von addieren hole ist der ja immer +. Ob ich den Button nun gedrückt habe oder nicht und somit läuft das Programm da schon nicht weiter...

      1. Hej,

        Dein html ist wahrscheinlich nicht valide, zudem dürfen die name-Attribute keine Leerzeichen enthalten.

        Hm, ok, aber das ist ja nicht das Problem. Das funktioniert ja noch wunderbar.

        Problem hin oder her, der Code -- insbesondere wenn er für die serverseitige verarbeitung relevant ist -- sollte valide sein. Nicht alle serverseitigen Logiken sind so tolerant wie Webbrowser.

        Das funktioniert aber ja nicht mit button, denn wenn ich den parameter von addieren hole ist der ja immer +.

        Auch wenn du den Subtrahieren-Button geklickt hast? Zeig uns bitte deinen  relevanten html-Code, oder pass ihn in irgendeiner Form hieran an:

          
          <input type="submit" name="plus" value="addieren" />  
          <input type="submit" name="minus" value="subtrahieren" />  
        
        

        Beste Grüße
        Biesterfeld

        --
        Art.1: Et es wie et es
        Art.2: Et kütt wie et kütt
        Art.3: Et hätt noch immer jot jejange
        Das Kölsche Grundgesetz
        1. Hallo,

          Problem hin oder her, der Code -- insbesondere wenn er für die serverseitige verarbeitung relevant ist -- sollte valide sein. Nicht alle serverseitigen Logiken sind so tolerant wie Webbrowser.

          OK, aber ich wollte erst mein Hauptproblem lösen, bevor ich mich um die Feinarbeit kümmere ;)

          Auch wenn du den Subtrahieren-Button geklickt hast? Zeig uns bitte deinen  relevanten html-Code, oder pass ihn in irgendeiner Form hieran an:

          Ja, auch dann habe ich beim Addierenbutton ja den Wert + draufstehen.

          <input type="submit" name="plus" value="addieren" />
            <input type="submit" name="minus" value="subtrahieren" />

            
          So sieht mein Code bereits aus.  
            
          Ich habe aber den Fehler bei mir gefunden. Mein HTML war korreckt, nur mein Javacode war an der Stelle, an dem ich den Buttonwert eingelesen habe nicht richtig.  
          Ich hatte:  
          if (plus = "+")  
             c = Rechner.addieren(a,b);  
            else if (minus = "-")  
             c = Rechner.subtrahieren(a,b);  
            
            
          usw.  
          Deswegen bin ich auch immer schon bei der ersten if Bedingung aus der ganzen Abfrage rausgeflogen, da mein Plusbutton immer den value="+" hat.  
          Habe dann jetzt:  
            
          if (plus != null)  
             c = Rechner.addieren(a,b);  
            else if (minus != null)  
             c = Rechner.subtrahieren(a,b);  
            else if (mal != null)  
             c = Rechner.multiplizieren(a, b);  
            else if (geteilt != null)  
             c = Rechner.dividieren(a, b);  
            
          geschrieben, und alles funktioniert wunderbar.  
            
          Vielen Dank aber für die Mühe und die hilfe.  
            
            
          LG  
            
          BCCameron