Webcontroller

Mariexshhx

Bekanntes Mitglied
Schreiben Sie einen Controller mit zwei Methoden (showForm und processForm) für die URL /form. Die showForm-Methode soll GET-Requests, die processForm-Methode POST-Requests verarbeiten. Schreiben Sie ein einfaches Formular form.html mit einem Input-Feld. Die showForm-Methode liefert das Formular aus. Die processForm-Methode gibt den Formularinhalt auf der Konsole aus und redirected den Browser zurück auf das Formular, es soll also ein neuer GET-Request ausgelöst werden.

Kann mir jemand sagen, was mit "ausliefern" gemeint ist das Formular kann doch nur eine Methode enthalten entweder Get oder Post. Und dann stelle ich mir die Frage, wie ich den Inhalt ausgeben soll und zurück zum Formular kommen soll...


Java:
<!DOCTYPE html>
<html lang="en" xmlns="http://www.w3.org/1999/html">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<form method="post" action="zahl">
    <label for="a">Zahl:</label>
    <input type="text" name="a" id="a">
    <button type="submit">Abschicken</button>
</form>

</body>
</html>
So sieht mein Formular aus... Ist einfach eine Zahl die ich ausgeben will ...


Code:
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;

@Controller
public class Webcontroller {

    @GetMapping("zahl")
    public @ResponseBody String showForm(int a){
        return  "Zahl angekommen";
    }

    @PostMapping("zahl")
    public  String processForm(String a){

        return a +  "redirect:/form.html";
    }


so sieht bisher mein Webcontroller aus...
 

Mariexshhx

Bekanntes Mitglied
Java:
@Controller
public class Webcontroller {

    @GetMapping("/zahl")
    public  String showForm(){
        return  "form";
    }
das war mit ausliefern gemeint ..:D nur wie schaffe ich das mit dem Ausgeben und zum Formular zurückkommen. Weil so wie ich das sehe wird wenn ich die Methode mit @ResponseBody annotiere einfach wirklich der Inhalt zurückgeben also exakt der String, der dort steht, wenn ich es aber weglasse kann a nicht ausgebgebn werden ....
 

Oneixee5

Top Contributor
Die Methode welche mit @GetMapping annotiert ist kann den oben gezeigten HTML-Code als String zurückgeben. Dann sollte dieser String als Webseite im Browser angezeigt werden, z.B.: http://localhost:8080/zahl (Host und Port musst du evtl. anpassen). Die Methoden GET und POST sind aus Sicht des Clients/Browsers benannt. Also Browser sagt GET (gib mir etwas) und beim Klick auf den Submit-Button sagt der Browser POST (also versende etwas). Im ersten Post verwendest du die Methoden genau falsch herum.
Wenn GET funktioniert melde dich noch mal.
 

Mariexshhx

Bekanntes Mitglied
Die Methode welche mit @GetMapping annotiert ist kann den oben gezeigten HTML-Code als String zurückgeben. Dann sollte dieser String als Webseite im Browser angezeigt werden, z.B.: http://localhost:8080/zahl (Host und Port musst du evtl. anpassen). Die Methoden GET und POST sind aus Sicht des Clients/Browsers benannt. Also Browser sagt GET (gib mir etwas) und beim Klick auf den Submit-Button sagt der Browser POST (also versende etwas). Im ersten Post verwendest du die Methoden genau falsch herum.
Wenn GET funktioniert melde dich noch mal.
Meine get Funktion funktioniert so, wie ich sie hier habe
Java:
@Controller
public class Webcontroller {

    @GetMapping("/zahl")
    public  String showForm(){
        return  "form";
    }
das war mit ausliefern gemeint ..:D nur wie schaffe ich das mit dem Ausgeben und zum Formular zurückkommen. Weil so wie ich das sehe wird wenn ich die Methode mit @ResponseBody annotiere einfach wirklich der Inhalt zurückgeben also exakt der String, der dort steht, wenn ich es aber weglasse kann a nicht ausgebgebn werden ....
Ich weiß nur nicht wie ich das mit der Post Methode machen soll
 

Oneixee5

Top Contributor
Meine get Funktion funktioniert so, wie ich sie hier habe

Ich weiß nur nicht wie ich das mit der Post Methode machen soll
Es funktioniert eben nicht.
Java:
@Controller
public class Webcontroller {

    @GetMapping("/zahl")
    public  String showForm(){
        return  """
            <html><body style="background-color:Tomato;">
            Wenn du gar keine Hilfe willst, dann frage doch gar nicht erst!
            <body><html>""";
    }
}
 

Mariexshhx

Bekanntes Mitglied
Es funktioniert eben nicht.
Java:
@Controller
public class Webcontroller {

    @GetMapping("/zahl")
    public  String showForm(){
        return  """
            <html><body style="background-color:Tomato;">
          Doch will ich, aber ich weiß nicht was nicht funktionieren soll.....
            <body><html>""";
    }
}
wenn ich /zahl mit einem Browser aufrufe, wird mir mein Formular angezeigt ich habe das getesetet
 

Mariexshhx

Bekanntes Mitglied
Java:
@Controller
public class Webcontroller {

    @GetMapping("/zahl")
    public  String showForm(){
        return  "form";
    }
das war mit ausliefern gemeint ..:D nur wie schaffe ich das mit dem Ausgeben und zum Formular zurückkommen. Weil so wie ich das sehe wird wenn ich die Methode mit @ResponseBody annotiere einfach wirklich der Inhalt zurückgeben also exakt der String, der dort steht, wenn ich es aber weglasse kann a nicht ausgebgebn werden ....
also so
das davor ging nicht, wie du schon gesagt hast hab ich das da genau verkehrt rum gemacht ...
 

Oneixee5

Top Contributor
Scheinbar verwendest du so etwas wie thymleaf. Diese Information wäre hilfreich gewesen.
So jetzt steht aber oben: Schreiben Sie einen Controller mit zwei Methoden (showForm und processForm) für die URL /form. ...
Wie ist deine URL?
 

Mariexshhx

Bekanntes Mitglied
Scheinbar verwendest du so etwas wie thymleaf. Diese Information wäre hilfreich gewesen.
So jetzt steht aber oben: Schreiben Sie einen Controller mit zwei Methoden (showForm und processForm) für die URL /form. ...
Wie ist deine URL?
ah sorry genau das verwende ich. Das wurde uns, aber vorgegeben kannst du mir sagen was genau das tut ? Und hast Recht ich muss /zahl zu /form ändern. Das meinst du oder ?
 

Neue Themen


Oben