Java
javaLernprogramm
Lösung des Problems, dass Spring MVC den Wert von Parametern nicht normal (mit Code) abrufen kann
Lösung des Problems, dass Spring MVC den Wert von Parametern nicht normal (mit Code) abrufen kann
Der Inhalt dieses Artikels befasst sich mit der Lösung des Problems, dass Spring MVC den Parameterwert nicht normal abrufen kann. Ich hoffe, dass er hilfreich ist Du. .
Ich bin kürzlich während der Entwicklung auf ein sehr seltsames Problem gestoßen. Bei der Verwendung des Spring MVC-Frameworks in Tomcat8 konnten die Methodenparameter im Controller nicht normal abgerufen werden. Es wurde durch Ändern der Tomcat-Version behoben 7,0.
Zeichnen Sie den folgenden Lösungsprozess auf, zuerst das obige Bild:


Das Projekt übernimmt ssm-Architektur, Der Wert des Parameters Passwort kann hier nicht abgerufen werden. Ich habe im Internet nach relevanten Informationen gesucht und die folgenden Lösungen gefunden, aber keine davon hat funktioniert:
1 Verwenden Sie die Annotation @RequestParam
Nach dem Hinzufügen der RequestParam-Anmerkung kann der Wert von „password“ immer noch nicht abgerufen werden. Der Fehler bedeutet, dass der Parameter „password“ fehlt Parameter wird eindeutig übergeben. Warum wird immer noch gesagt, dass der Parameter fehlt? Könnte es sein, dass die von mir übergebenen Parameter nicht erkannt wurden? Derzeit wird davon ausgegangen, dass möglicherweise ein Problem mit der Methode zur Parameterübergabe vorliegt. Die Methode zur Übergabe von Parametern wurde geändert, indem der Wert des Kennworts an das Ende der URL angehängt wird und Parameter genau wie bei einer GET-Anfrage übergeben werden. Aus diesem Grund kann der Wert des Parameters tatsächlich empfangen werden. Mit dieser Methode zur Parameterübergabe kann der Wert des Parameters jedoch empfangen werden, ohne die Annotation „RequestParam“ hinzuzufügen. Obwohl diese Methode den Wert des empfangenen Parameters empfangen kann, kann ich die Parameterübergabemethode von POST nicht ausstehen, also suche ich nach der nächsten Methode

2. Verwenden @RequestBody-Annotation

RequestBody bedeutet wörtlich: Der Text der Anfrage. Wenn ich die Anfrage stelle, füge ich die Parameter in den Text ein und übergebe sie, wenn ich das sehe Anmerkung: Wie erwartet konnte ich es kaum erwarten, Tomcat neu zu starten, und rief es dann mit Postman auf. Diesmal wurde der Haltepunkt nicht eingegeben und eine Ausnahme wurde direkt gemeldet:
org.springframework. http.converter.HttpMessageNotReadableException: Erforderlicher Anfragetext fehlt: public boolean com.scdq.manager.controller.SystemController.login(java.lang.String)
Die allgemeine Bedeutung der Ausnahme ist, dass der notwendige Anfragetext Bei der Abfrage relevanter Informationen haben wir festgestellt, dass der RequestBody nicht so sein kann. Zur Verwendung müssen Sie eine Klasse erstellen, relevante Parameter in der Klasse definieren und diese Klasse dann als Parametertyp der RequestBody-Annotation verwenden

Auf diese Weise geänderter Code, Tomcat erneut starten, Postman zum Aufrufen verwenden und dann erneut eine Ausnahme melden:
org.springframework.web.HttpMediaTypeNotSupportedException: Inhaltstyp „application/x-www-form-urlencoded“ wird nicht unterstützt
Die allgemeine Bedeutung der Ausnahme ist, dass der Inhaltstyp application/x-www-form-urlencoded ist. Im Allgemeinen werden die über das Formular übermittelten Daten standardmäßig verwendet Ich vermute, dass dies der Grund für die RequestBody-Annotation ist, also habe ich sie geändert: Verwenden Sie das JSON-Format, um Daten zu übergeben


Mit dieser Parameterübergabemethode kann der Wert des Parameters tatsächlich empfangen werden, aber die Methode zum Empfangen von Parametern und die Methode zur Übergabe von Parametern sind kompliziert geworden. Ich habe dieses Projekt von der Firma nach Hause kopiert und weitergeschrieben. Als ich in der Firma war, war alles in Ordnung, aber als ich nach Hause zurückkehrte, war ich verwirrt. Warum ist also etwas schiefgegangen, als ich nach Hause kam? Da die Codes gleich sind, die Laufergebnisse jedoch unterschiedlich sind, bedeutet dies nur, dass sich die Laufumgebung geändert hat. Wo genau ist die Umgebung anders? Wenn ein solches Problem auftritt, berücksichtigen Sie zunächst die Struktur der Datenbank. Da die Datenbankversion des Heimcomputers jedoch mit der des Firmencomputers identisch ist und die Daten direkt vom Unternehmen kopiert werden, ist die Datenbank direkt ausgeschlossen. Ganz zu schweigen davon, dass es ohne die Parameter und den Schritt des Zugriffs auf die Datenbank noch weniger wahrscheinlich mit der Datenbank zusammenhängt, sodass die Ursache der Datenbank direkt ausgeschlossen werden kann. Da das Projekt von Maven erstellt wird, werden die relevanten JAR-Pakete automatisch von Maven heruntergeladen. Daher frage ich mich, ob es ein Problem mit den JAR-Paketen gibt, die Maven automatisch herunterlädt. Löschen Sie dann alle JAR-Pakete im lokalen Warehouse und lassen Sie Maven erneut starten Ich habe es heruntergeladen und mehrmals wiederholt, aber das Problem bestand immer noch. Mir blieb nichts anderes übrig, als die Ursache von Maven vorübergehend auszuschließen. Am Ende fielen mir keine anderen Gründe ein, also begann ich an der Ursache von Tomcat zu zweifeln. Der Tomcat des Unternehmens ist Version 7.0, und der Tomcat zu Hause ist Version 8.0. Obwohl die beiden Tomcat-Versionen inkonsistent sind Ich denke nicht unbewusst, dass es die Tomcat-Version sein muss. Schließlich denke ich unbewusst, dass 8.0 ein Funktionsupgrade nach 7.0 sein muss. Obwohl ich so dachte, ging ich immer noch mit der Mentalität, ein totes Pferd und ein lebender Arzt zu sein, zum Test. Ich lud die 7.0-Version des komprimierten Pakets von der offiziellen Tomcat-Website herunter, konfigurierte dann die entsprechende Umgebung und rief sie mit Postman auf . Das Ergebnis war so unerwartet. ! ! ! Liegt es wirklich an der Tomcat-Version? Das fühlt sich zu langweilig an. . . . Es scheint, dass es keine gute Sache ist, blind nach höheren Versionen zu streben [Verwandte Empfehlungen: Java-Tutorial]
Das obige ist der detaillierte Inhalt vonLösung des Problems, dass Spring MVC den Wert von Parametern nicht normal (mit Code) abrufen kann. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!
Heiße KI -Werkzeuge
Undress AI Tool
Ausziehbilder kostenlos
Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos
AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.
Clothoff.io
KI-Kleiderentferner
Video Face Swap
Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!
Heißer Artikel
Heiße Werkzeuge
Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor
SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen
Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung
Dreamweaver CS6
Visuelle Webentwicklungstools
SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)
Heiße Themen
Ein neues Programmierparadigma, wenn Spring Boot auf OpenAI trifft
Feb 01, 2024 pm 09:18 PM
Im Jahr 2023 ist die KI-Technologie zu einem heißen Thema geworden und hat enorme Auswirkungen auf verschiedene Branchen, insbesondere im Programmierbereich. Die Bedeutung der KI-Technologie wird den Menschen zunehmend bewusst, und die Spring-Community bildet da keine Ausnahme. Mit der kontinuierlichen Weiterentwicklung der GenAI-Technologie (General Artificial Intelligence) ist es entscheidend und dringend geworden, die Erstellung von Anwendungen mit KI-Funktionen zu vereinfachen. Vor diesem Hintergrund entstand „SpringAI“ mit dem Ziel, den Prozess der Entwicklung von KI-Funktionsanwendungen zu vereinfachen, ihn einfach und intuitiv zu gestalten und unnötige Komplexität zu vermeiden. Durch „SpringAI“ können Entwickler einfacher Anwendungen mit KI-Funktionen erstellen, wodurch diese einfacher zu verwenden und zu bedienen sind.
Verwenden Sie Spring Boot und Spring AI, um generative Anwendungen für künstliche Intelligenz zu erstellen
Apr 28, 2024 am 11:46 AM
Als Branchenführer bietet Spring+AI durch seine leistungsstarke, flexible API und erweiterte Funktionen führende Lösungen für verschiedene Branchen. In diesem Thema werden wir uns mit den Anwendungsbeispielen von Spring+AI in verschiedenen Bereichen befassen. Jeder Fall wird zeigen, wie Spring+AI spezifische Anforderungen erfüllt, Ziele erreicht und diese LESSONSLEARNED auf ein breiteres Anwendungsspektrum ausdehnt. Ich hoffe, dieses Thema kann Sie dazu inspirieren, die unendlichen Möglichkeiten von Spring+AI tiefer zu verstehen und zu nutzen. Das Spring-Framework hat eine mehr als 20-jährige Geschichte im Bereich der Softwareentwicklung, und seit der Veröffentlichung der Spring Boot 1.0-Version sind 10 Jahre vergangen. Nun kann niemand diesen Frühling bestreiten
Was sind die Implementierungsmethoden für programmatische Frühlingstransaktionen?
Jan 08, 2024 am 10:23 AM
So implementieren Sie programmgesteuerte Spring-Transaktionen: 1. Verwenden Sie TransactionCallback und TransactionCallbackWithoutResult; 4. Verwenden Sie TransactionTemplate in Kombination mit @Transactional;
So implementieren Sie geplante Aufgaben in Java Spring
May 24, 2023 pm 01:28 PM
Java implementiert geplante Aufgaben In der mit Jdk gelieferten Bibliothek gibt es zwei Möglichkeiten, geplante Aufgaben zu implementieren: eine ist Timer und die andere ist ScheduledThreadPoolExecutor. Wenn Timer+TimerTask einen Timer erstellt, wird ein Thread erstellt, der zum Planen von TimerTask-Aufgaben verwendet werden kann. Der Timer verfügt über vier Konstruktionsmethoden. Sie können den Namen des Timer-Threads angeben und angeben, ob er als Daemon-Thread festgelegt werden soll. Der Standardname ist Timer-Nummer und der Standardname ist kein Daemon-Thread. Es gibt drei Hauptmethoden: cancel(): Aufgabenplanung beenden, alle derzeit geplanten Aufgaben abbrechen, laufende Aufgaben sind davon nicht betroffen. purge(): Aufgaben aus der Aufgabenwarteschlange entfernen
So legen Sie die Transaktionsisolationsstufe im Frühjahr fest
Jan 26, 2024 pm 05:38 PM
So legen Sie die Transaktionsisolationsstufe in Spring fest: 1. Verwenden Sie die Annotation @Transactional. 3. Legen Sie sie in der Spring-Konfigurationsdatei fest. 4. Legen Sie sie in der Java-Konfigurationsklasse fest. Detaillierte Einführung: 1. Verwenden Sie die Annotation @Transactional, fügen Sie die Annotation @Transactional zu der Klasse oder Methode hinzu, die eine Transaktionsverwaltung erfordert, und legen Sie die Isolationsstufe im Attribut fest. 2. In der Spring-Konfigurationsdatei usw.
Die Unterschiede und Zusammenhänge zwischen Spring Boot und Spring Cloud
Jun 22, 2023 pm 06:25 PM
SpringBoot und SpringCloud sind beides Erweiterungen des Spring Framework, die Entwicklern dabei helfen, Microservice-Anwendungen schneller zu erstellen und bereitzustellen. Sie haben jedoch jeweils unterschiedliche Zwecke und Funktionen. SpringBoot ist ein Framework zum schnellen Erstellen von Java-Anwendungen, das es Entwicklern ermöglicht, Spring-basierte Anwendungen schneller zu erstellen und bereitzustellen. Es bietet eine einfache und leicht verständliche Möglichkeit, eigenständige, ausführbare Spring-Anwendungen zu erstellen
Lernen Sie Spring Cloud von Grund auf
Jun 22, 2023 am 08:11 AM
Als Java-Entwickler ist das Erlernen und Verwenden des Spring-Frameworks eine wesentliche Fähigkeit. Mit der Popularität von Cloud Computing und Microservices ist das Erlernen und Verwenden von Spring Cloud zu einer weiteren Fähigkeit geworden, die beherrscht werden muss. SpringCloud ist ein auf SpringBoot basierendes Entwicklungstoolset zum schnellen Aufbau verteilter Systeme. Es bietet Entwicklern eine Reihe von Komponenten, darunter Dienstregistrierung und -erkennung, Konfigurationscenter, Lastausgleich und Leistungsschalter usw., sodass Entwickler Mikrofunktionen erstellen können
Detaillierte Erläuterung der Bean-Erfassungsmethoden im Frühjahr
Dec 30, 2023 am 08:49 AM
Detaillierte Erläuterung der Bean-Erfassungsmethode in Spring Im Spring-Framework ist die Bean-Erfassung ein sehr wichtiger Teil. In Anwendungen müssen wir häufig die Abhängigkeitsinjektion verwenden oder Bean-Instanzen dynamisch abrufen. In diesem Artikel wird detailliert beschrieben, wie Sie Beans im Frühjahr erhalten, und es werden spezifische Codebeispiele aufgeführt. Das Abrufen der Bean@Component-Annotation über die @Component-Annotation ist eine der am häufigsten verwendeten Annotationen im Spring-Framework. Wir können dies tun, indem wir @Compone zur Klasse hinzufügen


