Ich weiß, wie ich sicherstellen kann, ob ein bestimmter Parameter in der URL existiert. Ich möchte sicherstellen, dass kein Parameter in der URL vorhanden ist und nicht nur ein bestimmter. Wie kann ich das erreichen? Ich habe eine lange Liste von Parametern und es scheint ineffizient, eine Liste von Bedingungen für alle von ihnen zu haben.
Beispiel-URL ist: www.domain.com/Product/UniqueId
Da jedes Produkt über viele einzigartige Parameter verfügt, können Benutzer Produktseiten über einen eindeutigen Code, einen eindeutigen Lieferanten, einen eindeutigen Sig, einen eindeutigen Pod usw. der Produkte erreichen.
Zum Beispiel:
%Vor%Die Fragen, die ich für relevant hielt, aber in meinem Fall nicht brauchten, waren 1 , 2 , 3 , 4
Ich muss solche Tests in JSP und nicht in Java durchführen.
Nachverfolgung
Mit der neuen Anforderung, dass es in JSP getan werden muss, obwohl der Spring-Handler-Code, der in der ursprünglichen Antwort unten aufgeführt wird, ein Model-Attribut mit den relevanten Informationen hinzufügen kann, hier ist, wie das zu tun ist.
Ähnlich zwei Wege wie unten:
%Vor% %Vor%Ursprüngliche Antwort
Sie haben spring-mvc
getaggt, das heißt, Sie haben so etwas (wäre schön gewesen, wenn Sie es gepostet hätten) :
Hier sind zwei Möglichkeiten, nach "keine Abfrageparameter" zu suchen:
%Vor% %Vor% Sie können diesen Link für alle Arten von Parametern überprüfen, die Spring Ihnen geben kann:
Ссылка
Das geht mit der URI-Klasse etwas einfacher:
%Vor% Wenn also getQuery()
null
zurückgibt, gibt es keine Parameter. Ansonsten gibt es.
Bezüglich Ihrer Bearbeitung: Nun, ich empfehle nicht, Code in eine JSP zu schreiben. Es ist heutzutage eine schlechte Übung.
Aber wenn Sie müssen, sieht es so aus, als könnten Sie nach allen Parametern fragen und wenn das Ergebnis 0 ist, gab es keine.
%Vor% JSP-Code ist nicht getestet, sollte Ihnen aber die Idee geben. Sie können den booleschen noParams
später im JSP-Code verwenden.
Nicht sicher, was Sie meinen, "um sicherzustellen, dass es keinen Parameter gibt". Sie können einfach nicht, Kunden können die URL verwenden, die sie auf Ihren Server schlagen möchten. Sie können nur basierend auf der URL-Zeichenfolge, die Ihr Servercode empfängt, verarbeiten.
Ansonsten gibt es zwei Hinweise:
Versuchen Sie, die URL zu überprüfen oder zu analysieren? Wenn ja, kannst du Folgendes tun: url.indexOf ('?') & lt; 0, vorausgesetzt, url varialble hat die gesamte URL Zeichenfolge ...
Siehe auch Java URL api, um eine Abfragezeichenfolge usw. zu erhalten.
JSP hält ein implizites Objekt ein paramValue
, das zuordnet die Anfrageparameter zu einem Array. Sie können dieses Objekt und die Funktion JSTL length verwenden, um die Anzahl der Parameter direkt in zu lernen jsp, etwas wie
Stellen Sie sicher, dass Sie die folgenden taglibs am Anfang Ihrer jsp-Seite einfügen
%Vor%Mit Regex können wir leicht nach Parametern suchen. Sagen wir, Sie haben die folgenden URLs:
%Vor%Nun kann die tatsächliche URL alles sein. Wir können es als . * bezeichnen, was alles bedeutet. (Dot = ein beliebiges Zeichen, * = Null oder mehrmals. Es gibt komplexere Regexes, die nach URLs suchen, aber Sie sagten, dass Sie URLs erhalten haben, daher sind sie nicht relevant).
Nachdem Sie Ihre URL gefunden haben, möchten Sie nach Parametern suchen. Parameter haben die Syntax von:
%Vor%Wir wollen also nach einem Fragezeichen suchen, gefolgt von einer Kombination von Schlüsseln und Werten. Die Regex wäre:
%Vor%Dies entspricht einem Fragezeichen, gefolgt von: einem Schlüssel (. ), einem Gleichheitszeichen, einem Wert (. ) und einem möglichen & amp; (& amp ;?), 1 oder mehrmals (+)
So können Sie es in eine Methode wie folgt einfügen:
%Vor%www.domain.com/Product/UniqueId?foo=bar würde der Regex entsprechen, und www.domain.com/Product/UniqueId würde nicht, weil Es folgt nicht die Parameter.
P.S: Der doppelte Schrägstrich vor dem Fragezeichen bezieht sich auf Java, nicht auf Regex.
Link: Regex-Checker mit folgendem Regex & amp; Beispiel
Wenn Sie es in JSP verwenden möchten, fügen Sie diese Methode einfach in ein Skript ein (das mit & lt;% begonnen wurde und mit% & gt; endet) oder an einer anderen Stelle in Ihrem Code.
Verwenden Sie die Methoden von java.net.URI , um zu erhalten alles was du über die URL brauchst.